我将隐式展开的可选声明声明为:
var numberOfRows: Int!
并在init中初始化它:
numberOfRows = 25
后来我需要将其减一,所以我写道:
numberOfRows--
但这不能编译。错误消息表明减量运算符不能应用于隐式解包的可选值。经过一些实验,我发现以下编译没有错误:
numberOfRows!--
我想了解这一点。对于看起来像多余的“!”的解释是什么?
最佳答案
隐式解包可选本身就是一种类型,与它所包装的类型不同。 可选值和隐式解包可选值上的一些运算符是由语言预先定义的,但对于其余的运算符,您必须自己定义它们。
在这种特殊情况下,运算符(operator) postfix func --(inout value: Int!) -> Int!
只是没有定义。如果你想使用postfix --
运算符 Int!
就像您在 Int
上使用它一样那么你必须定义一个。
例如像这样:
postfix func --<T: SignedIntegerType>(inout value: T!) -> T! {
guard let _value = value else { return nil }
value = _value - 1
return _value
}
关于swift - 增加隐式展开的可选值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33504945/