从Swift 2.0一书中可以看出
“下标可以使用变量参数和可变参数”
我试图实现一个在下标中使用可变参数的简单类,但是我遇到了编译错误。
class ClassWithSubscript {
var values = [String: String]()
subscript(fields: String...) -> String? {
get {
return values[fields[0]]
}
set(newValue) {
values[fields[0]] = newValue
}
}
}
编译错误为<unknown>:0: error: result type '@lvalue String?' (aka '@lvalue Optional<String>') does not match expected type
我正在使用Xcode 7 GM Seed(7.0 7A218)
看起来删除setter可以让编译成功。我可以在不删除setter的情况下编译它吗?
我也就这个话题提出了a post in the Apple Developer Forum。
编辑:我已经向Apple提交了一份错误报告。答案 0 :(得分:1)
我认为这应该被视为一个错误。
如果删除可变参数并使用String
或[String]
,则可以使用设置器。
另一种可能对您不起作用的解决方案:
// using a separate set function:
func set(fields: String..., newValue: String) {
values[fields[0]] = newValue
}