代码之家  ›  专栏  ›  技术社区  ›  Mark A. Donohoe

在Swift中,编译器是否允许您隐式访问正在打开的值?

  •  1
  • Mark A. Donohoe  · 技术社区  · 6 年前

    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
    }
    

    (注:我正在使用 switchValue 这里是一个例子)

    switch getValToSwitchOn() {
        case .categories: return categories.count > 0 ? switchValue.displayName : nil
        case .narratives: return narratives.count > 0 ? switchValue.displayName : nil
    }
    

    这使我可以直接用函数来馈送开关,而不必首先创建显式变量,因为开关的值是隐式为我提供的。如果我这么做没什么大不了的(只有一行),但我想知道是否已经有类似的事情了。

    Swift是否有一个隐式变量 转换

    1 回复  |  直到 6 年前
        1
  •  0
  •   JonJ    6 年前

    开关没有“隐式”变量,因为您使用case语句检查开关的值。