在Swift中,编译器是否允许您隐式访问要切换的值?

问题描述 投票:1回答:1

Swift的一个很酷的功能是它为你提供了很多隐式变量,例如:

  • valueset声明中。
  • oldValuedidSet声明中。
  • errorcatch条款中。

我想知道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有隐含变量吗?

swift variables switch-statement implicit
1个回答
0
投票

交换机没有“隐式”变量,因为您使用case语句来检查交换机的值。

© www.soinside.com 2019 - 2024. All rights reserved.