假设我有一个Dictionary<String, String>
我希望为实现StringLiteralConvertible的类型提供方便的getter。
let items = ["Key 1": "Value 1", "Key 2": "Value 2"]
func get<T: StringLiteralConvertible>(key: String, _ defaultValue: T) -> T {
if let value = items[key] {
return T(stringLiteral: value) // BUG
}
return defaultValue
}
但是在标有BUG评论的行上放什么?
答案 0 :(得分:4)
该行实际上是正确的,但上面的行应该更具体地说明将是什么类型的值。尝试:
func get<T: StringLiteralConvertible>(key: String, _ defaultValue: T) -> T {
if let value = items[key] as? T.StringLiteralType {
return T(stringLiteral: value)
}
return defaultValue
}
PS:您可能还希望将items
作为参数传递