对于切换情况下的execution(void de.scrum_master.app.AnnotatedClass.doSomething())
execution(void de.scrum_master.app.AnnotatedClass.doSomethingElse())
execution(void de.scrum_master.app.AnnotatedMethod.doSomething())
execution(void de.scrum_master.app.AnnotatedMixed.doSomething())
execution(void de.scrum_master.app.AnnotatedMixed.doSomethingElse())
,我有点怀疑,这是一个简单的代码,哪个更好?
let position
答案 0 :(得分:5)
enum
当let
指定enum Result
值时使用此语法。在这种情况下,case success
指定Int
还将包含code
的{{1}}值。
在switch语句中let
之后立即使用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")
}
答案 1 :(得分:3)
The Swift Programming Language: Enumeration: Associated Values说:
您可以使用
switch
语句检查不同的条形码类型,类似于Matching Enumeration Values with a Switch Statement中的示例。但是,这次,关联值被提取为switch语句的一部分。您可以将每个关联的值提取为常量(带有let
前缀)或变量(带有var
前缀),以便在switch
案例的正文中使用:switch productBarcode { case .upc(let numberSystem, let manufacturer, let product, let check): print("UPC: \(numberSystem), \(manufacturer), \(product), \(check).") case .qrCode(let productCode): print("QR code: \(productCode).") } // Prints "QR code: ABCDEFGHIJKLMNOP."
如果枚举案例的所有关联值都提取为常量,或者如果所有提取的值都提取为变量,则为简便起见,您可以在案例名称前放置单个
var
或let
批注:switch productBarcode { case let .upc(numberSystem, manufacturer, product, check): print("UPC : \(numberSystem), \(manufacturer), \(product), \(check).") case let .qrCode(productCode): print("QR code: \(productCode).") } // Prints "QR code: ABCDEFGHIJKLMNOP."
简而言之,它们是等效的,当您提取多个相关值时,后者是一个有用的速记。
答案 2 :(得分:1)
case .success(let code):// first
case let .success(code)://second
在您显示的示例中,没有区别。两者都是合法的,并且都做同样的事情。在这种情况下,它们是等效的模式。