Ale*_*lex 19 switch-statement swift
免责声明:快速的菜鸟
嗨,我刚刚开始学习Swift并且正在学习Swift编程语言(在WWDC期间发布的Apple的书)并想知道'where'关键字是什么.它被用于
let vegetable = "red pepper"
switch vegetable {
case "celery":
let vegetableComment = "Add some raisins and make ants on a log."
case "cucumber", "watercress":
let vegetableComment = "That would make a good tea sandwich."
case let x where x.hasSuffix("pepper"):
let vegetableComment = "Is it a spicy \(x)?"
default:
let vegetableComment = "Everything tastes good in soup."
}
Run Code Online (Sandbox Code Playgroud)
摘录自:Apple Inc."The Swift Programming Language."iBooks.https://itun.es/us/jEUH0.l
如果有人能用另一种语言(java,c ++,obj-c等)解释和/或显示等效语言,那就太棒了.
如果已经有人问过这个道歉,我没有在任何地方看到它.
Nat*_*ook 43
Swift的switch陈述比大多数其他语言中的陈述强大得多.他们使用模式匹配来选择case 要评估的值,而不是简单地从一组值中进行选择.让我们看一下case你的例子:
case "celery":
Run Code Online (Sandbox Code Playgroud)
超级简单 - 这将匹配字符串"celery",没有别的.
case "cucumber", "watercress":
Run Code Online (Sandbox Code Playgroud)
这种情况下将匹配任何字符串"cucumber"或字符串"watercress".凉.在其他语言中,您可能需要使用一个初始案例来获取这两者.
case let x where x.hasSuffix("pepper"):
Run Code Online (Sandbox Code Playgroud)
switch与Java和C相比,这种情况包含两个特定于Swift 语句的概念.第一个是值绑定 - let x此语句的一部分将匹配的值绑定到x作用于case的主体的常量.
接下来是该where条款.这是一个布尔测试,就像一个if语句一样,所以只有表达式才匹配大小写true.在此示例中,x.hasSuffix("pepper")查看绑定值并检查它是否以结尾"pepper".字符串"red pepper","green pepper"并且"spicy hot pepper"都会匹配,但"peppercorns"不会.
default:
Run Code Online (Sandbox Code Playgroud)
在Swift中,switch语句需要耗尽匹配值的所有可能值,因此它们通常以default:case块结束,以处理先前未匹配的任何值.唯一一次你不会看到这个,如果你enum只匹配一个只有几个值,因为你可以手动耗尽所有选项.
Joy*_*ord 16
您可以在单个if语句中包含多个可选绑定,并使用where子句检查布尔条件:
if let firstNumber = Int("4"), secondNumber = Int("42") where firstNumber < secondNumber {
print("\(firstNumber) < \(secondNumber)")
}
// prints "4 < 42
Run Code Online (Sandbox Code Playgroud)