Swift 具有关联类型的泛型键值存储
我想为我的应用程序设计一个键/值配置存储 我试图提出Swift 具有关联类型的泛型键值存储,swift,Swift,我想为我的应用程序设计一个键/值配置存储 我试图提出ConfigurationStore协议,允许我从中心位置设置和获取配置值(在这种情况下可以是一个映射)。需要对特定键的值进行类型检查。例如:timeInSeconds的值不能是字符串 // psuedocode protocol ConfigurationStore { set(key: TypeCheckedKey, value: AssociatedValueForThatKey) get(key: TypeCheck
ConfigurationStore
协议,允许我从中心位置设置和获取配置值(在这种情况下可以是一个映射)。需要对特定键的值进行类型检查。例如:timeInSeconds
的值不能是字符串
// psuedocode
protocol ConfigurationStore {
set(key: TypeCheckedKey, value: AssociatedValueForThatKey)
get(key: TypeCheckedKey) -> AssociatedValueForThatKey?
}
需要对键及其关联值进行类型检查。我不能用两种不同的值类型为同一个键调用set。可能需要某种类型的Key:ValueType对的映射
我该怎么做呢?我当前希望支持Int
、Double
和String
配置值
我考虑过对键使用枚举,但是我可以将多个值类型设置为同一个键
所有这些都需要通用,以便应用程序的使用者可以定义键和值。尝试以下操作:
protocol ConfigurationStore {
associatedtype TypeCheckedKey
associatedtype AssociatedValueWithTheKey
func set(key: TypeCheckedKey, value: AssociatedValueWithTheKey)
func get(key: TypeCheckedKey) -> AssocicatedValueWithTheyKey?
}
UPD:
我如何映射哪个键属于哪个值类型?@user2416162这应该是您的实现。协议描述您的接口/抽象如何使抽象足够通用,但它知道密钥允许的值类型如何示例如何使用它,即使它不编译
final class SomeStore: ConfigurationStore {
typealias TypeCheckedKey = String
typealias AssociatedValueWithTheKey = String
func set(key: TypeCheckedKey, value: AssociatedValueWithTheKey) {
// your realisation
}
func get(key: TypeCheckedKey) -> AssocicatedValueWithTheyKey? {
// your realisation
}
}