当前位置: 首页 > 面试题库 >

Swift 2-“ if”中的模式匹配

漆雕硕
2023-03-14
问题内容

最近,我看到了Apple的WWDC
2015主题演讲。我也看了一些文档,但是找不到“如果…中的模式匹配”部分,即它们在其中一张幻灯片上的书写方式。(来自Apple
Events的
68分钟00秒视频)

你知道这是什么意思吗?还是语法?


问题答案:

它真正的意思是,if语句现在已经支持模式匹配,就像switch语句一样。例如,以下是使用if / else if /
else语句“切换”枚举大小写的有效方法。

enum TestEnum {
    case One
    case Two
    case Three
}

let state = TestEnum.Three

if case .One = state {
    print("1")
} else if case .Two = state {
    print("2")
} else {
    print("3")
}

现在,以下是一种检查是否someInteger在给定范围内的可接受方法。

let someInteger = 42
if case 0...100 = someInteger {
    // ...
}

这是使用The Swift Programming
Language中的可选模式的另外几个示例

let someOptional: Int? = 42
// Match using an enumeration case pattern
if case .Some(let x) = someOptional {
    print(x)
}

// Match using an optional pattern
if case let x? = someOptional {
    print(x)
}


 类似资料:
  • 问题内容: 我有以下输入, 我想提取所有输入, 除了 包含“ ”的行和包含单个(点)的最后一行。也就是说,我想提取以下内容 我尝试了以下方法 但它不起作用,因为它不会产生任何输出。 问题答案: 实际操作: 别忘了负前瞻,否则您将无法获得任何匹配;-)

  • 我正在编写一个Rust程序来收集每个输入行的第一个字,这有点类似于Unix实用程序。 这让我 我读过《不能作为可变借来》一书,因为它也是作为不可变借来的,但我仍然感到困惑:可变借来发生在第10行,而不可变借来发生在第12行,那么“已经作为不可变借来的变量是作为可变借来的”怎么可能发生呢?至少错误应该是“一个已经作为可变(在第10行)借用的变量被作为不可变(在第12行)借用”。

  • 我正在学习函数式编程的入门课程,其中我们使用Haskell。练习的一部分是为输入字符串编写解析器。 然而,我无法解决以下错误,或者得到实际发生的事情。 错误来自这一行: 我期望发生的是,输入字符串被拆分成一个行列表,并传递给parseTrack。然后,parseTrack将使用模式匹配来命名列表中最前面的两个字符串(行)和其他字符串。 然而,我认为正在发生的是finish是列表中的顶部元素,sta

  • 是否有一种方法可以通过checkstyle配置文件来抑制与给定模式匹配的行的警告? 多谢了。

  • 模式,是Rust另一个强大的特性。它可以被用在let和match表达式里面。相信大家应该还记得我们在复合类型中提到的关于在let表达式中解构元组的例子,实际上这就是一个模式。 let tup = (0u8, 1u8); let (x, y) = tup; 而且我们需要知道的是,如果一个模式中出现了和当前作用域中已存在的同名的绑定,那么它会覆盖掉外部的绑定。比如: let x = 1; let c

  • if let 语法让我们以一种不那么冗长的方式结合 if 和 let,来处理只匹配一个模式的值而忽略其他模式的情况。考虑示例 6-6 中的程序,它匹配一个 Option<u8> 值并只希望当值为三时执行代码: 示例 6-6:match 只关心当值为 Some(3) 时执行代码 我们想要对 Some(3) 匹配进行操作但是不想处理任何其他 Some<u8> 值或 值。为了满足 match 表达式(穷