我对let position
in切换的情况有点怀疑,这是一个简单的代码,哪个更好
enum Result{
case success(code:Int)
case fail(err:NSError)
}
var result = Result.success(code: 3)
switch result {
case .success(let code):// first
case let .success(code)://second
print("success",code)
default:
print("fail")
}
Run Code Online (Sandbox Code Playgroud)
case .success(let code):
当enum
指定let
值时使用此语法。在这种情况下,enum Result
指定case success
还将包含的Int
值code
。
在switch语句中使用let
right after case
通常与where
子句结合使用,以允许在switch语句中使用更复杂的case
值。这样的一个例子如下
var text = "Hello"
var greetings = ["Hello", "Good Bye"]
switch text {
case let value where greetings.contains(value):
print("Yes")
default:
print("No")
}
Run Code Online (Sandbox Code Playgroud)
正如Swift 编程语言:枚举:关联值所说:
\n\n\n\n\n您可以使用语句检查不同的条形码类型
\n\nswitch
,类似于使用 Switch 语句匹配枚举值中的示例。然而,这一次,关联的值被提取为 switch 语句的一部分。您将每个关联值提取为常量(带有let
前缀)或变量(带有前缀),以便在case\xe2\x80\x99s 主体var
中使用:switch
Run Code Online (Sandbox Code Playgroud)\n\nswitch productBarcode {\ncase .upc(let numberSystem, let manufacturer, let product, let check):\n print("UPC: \\(numberSystem), \\(manufacturer), \\(product), \\(check).")\ncase .qrCode(let productCode):\n print("QR code: \\(productCode).")\n}\n// Prints "QR code: ABCDEFGHIJKLMNOP."\n
如果枚举案例的所有关联值都提取为常量,或者如果所有值都提取为变量,则为了简洁起见,您可以在案例名称之前放置单个
\n\nvar
或注释:let
Run Code Online (Sandbox Code Playgroud)\nswitch productBarcode {\ncase let .upc(numberSystem, manufacturer, product, check):\n print("UPC : \\(numberSystem), \\(manufacturer), \\(product), \\(check).")\ncase let .qrCode(productCode):\n print("QR code: \\(productCode).")\n}\n// Prints "QR code: ABCDEFGHIJKLMNOP."\n
简而言之,它们\xe2\x80\x99 是等效的,当您提取多个关联值时,后者是一种有用的简写。
\n 归档时间: |
|
查看次数: |
409 次 |
最近记录: |