这有效,但似乎效率低下:
switch var1 {
case 1:
string1 = "hello"
case 2:
string1 = "there"
default:
string1 = "world"
}
Run Code Online (Sandbox Code Playgroud)
但
string1 = switch var1 { ...
Run Code Online (Sandbox Code Playgroud)
抛出错误.是否有更有效的方法来编写开关/外壳,以便在每一行中没有冗余地列出分配的变量?
提前致谢!
Tom*_*ton 70
switch如果您只在一个地方使用该代码,请将其置于匿名闭包中.
string1 = {
switch var1 {
case 1:
return "hello"
case 2:
return "there"
default:
return "hello"
}
}()
Run Code Online (Sandbox Code Playgroud)
dfr*_*fri 17
您可以将switch块放在返回String对象的函数中,并将此函数的返回值赋给变量string1:
func foo(var1: Int) -> String {
switch var1 {
case 1:
return "hello"
case 2:
return "there"
default:
return "world"
}
}
/* Example */
var var1 : Int = 1
var string1 : String = foo(var1) // "hello"
var1 = 2
string1 = foo(var1) // "there"
var1 = 5000
string1 = foo(var1) // "world"
Run Code Online (Sandbox Code Playgroud)
或者,string1设为计算属性(例如,在某些类中),具体取决于say的值var1,并将switch块放在此属性的getter中.在操场上:
var var1 : Int
var string1 : String {
switch var1 {
case 1:
return "hello"
case 2:
return "there"
default:
return "world"
}
}
/* Example */
var1 = 1
print(string1) // hello
var1 = 2
print(string1) // there
var1 = 100
print(string1) // world
Run Code Online (Sandbox Code Playgroud)
如果在类中使用,只需跳过上面的Example块.
现在您可以直接从表达式中分配值,switch/case例如:
let result = switch range {
case 0...30: "Low"
case 31...50: "Medium"
case 51...80: "Hight"
default: "Other"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9164 次 |
| 最近记录: |