【问题标题】:switch statement optimization (Swift)switch 语句优化 (Swift)
【发布时间】:2014-08-13 11:06:25
【问题描述】:

在 swift switch 语句中,条件是调用一次还是每次调用一次?哪个更快?

switch foo(param) {
case 0:
    NSLog(0)
default:
    NSLog("default")
}

let myNumber = foo(param)    

switch myNumber {
case 0:
    NSLog(0)
default:
    NSLog("default")
}

【问题讨论】:

  • 你想达到什么目的?两者之间应该没有任何区别。
  • 您可以自己轻松测试:编写一个函数foo(),在调用时打印一些输出。
  • 这个问题就像哪个会更快:while (1) {...} or while(2) {...}?...
  • 并非如此,在 for 循环中,每次迭代都应该使用局部变量而不是函数调用
  • @quemeful,你已经在一分钟内成为这个话题的专家。 :)

标签: optimization swift switch-statement


【解决方案1】:

switch 只对其参数求值一次。

正如 Martin 在 cmets 中建议的那样,这个例子证明了这一点

func foo(name: String) -> Int {
  println(name)
  return countElements(name)
}

switch foo("hello") {
  case 0: println(0)
  case 1: println(1)
  default: println("default")
}

输出

hello
default

如果它正在评估每个案例,您会期望

hello
hello
default

改为

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-30
    • 1970-01-01
    • 1970-01-01
    • 2014-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多