尝试在Swift中使用带有下标的variadic参数时出现编译错误

时间:2015-09-13 07:05:29

标签: xcode swift swift2 xcode7

从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提交了一份错误报告。

1 个答案:

答案 0 :(得分:1)

我认为这应该被视为一个错误。

如果删除可变参数并使用String[String],则可以使用设置器。

另一种可能对您不起作用的解决方案:

// using a separate set function:
func set(fields: String..., newValue: String) {
    values[fields[0]] = newValue
}