que*_*ful 1 optimization switch-statement swift
在swift switch语句中,条件是一次调用还是针对每种情况调用?哪个会更快?
switch foo(param) {
case 0:
NSLog(0)
default:
NSLog("default")
}
Run Code Online (Sandbox Code Playgroud)
要么
let myNumber = foo(param)
switch myNumber {
case 0:
NSLog(0)
default:
NSLog("default")
}
Run Code Online (Sandbox Code Playgroud)
switch 仅计算一次其参数。
正如Martin在评论中建议的那样,此示例证明了这一点。
func foo(name: String) -> Int {
println(name)
return countElements(name)
}
switch foo("hello") {
case 0: println(0)
case 1: println(1)
default: println("default")
}
Run Code Online (Sandbox Code Playgroud)
输出
hello
default
Run Code Online (Sandbox Code Playgroud)
如果要针对每种情况进行评估,您会期望
hello
hello
default
Run Code Online (Sandbox Code Playgroud)
代替