Swift的一个很酷的功能是它为你提供了很多隐式变量,例如:
value
在set
声明中。oldValue
在didSet
声明中。error
在catch
条款中。我想知道switch
声明是否有类似的东西。不这么认为,但想问。
例如,采用以下代码(假设有一个定义计算的displayName
属性的枚举)。
注意我必须显式创建一个临时变量来保存函数的结果,因为我必须使用它来打开,并且还要在下面的case语句中使用...
let valToSwitchOn = getValToSwitchOn()
switch valToSwitchOn {
case .categories: return categories.count > 0 ? valToSwitchOn.displayName : nil
case .narratives: return narratives.count > 0 ? valToSwitchOn.displayName : nil
}
但是,如果Swift为开启值提供隐式变量,它会简化代码,就像这样(注意:我在这里使用switchValue
作为例子)...
switch getValToSwitchOn() {
case .categories: return categories.count > 0 ? switchValue.displayName : nil
case .narratives: return narratives.count > 0 ? switchValue.displayName : nil
}
这让我可以直接使用函数为开关提供开关,而无需先创建显式变量,因为隐式为我提供了开启值。如果我这么做(这只是一条线),那就不是什么大不了的事了,但我想知道是否还有这样的东西。
那么Swift对switch
有隐含变量吗?
交换机没有“隐式”变量,因为您使用case语句来检查交换机的值。