如何使用switch case语句创建在switch-case语句之外有效的变量/常量.如果没有办法做到这一点,我还能做些什么来达到相同的效果,即创建受条件限制的变量,并使其在"全局"或更高范围内可访问?
var dogInfo = (3, "Fido")
switch dogInfo {
case(var age, "wooff"):
println("My dog Fido is \(age) years old")
case (3, "Fido"):
var matchtrue = 10 --> 10
matchtrue -->10
default:
"No match"
}
matchtrue --> Error: Use of unresolved identifier 'matchtrue'
Run Code Online (Sandbox Code Playgroud)
这是我解决的问题:
var randomNumberOne = 0, randomNumberTwo = 0, randomNumberThree = 0
func chosen (#a: Int, #b: Int) -> (randomNumberOne: Int, randomNumberTwo: Int, randomNumberThree: Int){
if a > 0 {
let count1 = UInt32(stringArray1.count)-1
let randomNumberOne = Int(arc4random_uniform(count1))+1
}
if b > 0 {
let count2 = UInt32(stringArray2.count)-1 Output: 3 (from earlier)
let randomNumberTwo = Int(arc4random_uniform(count2))+1 Output: 2
}
if a > 0 && b > 0 {
let count3 = UInt32(stringArray3.count)-1
let randomNumberThree = Int(arc4random_uniform(count3))+1
}
return (randomNumberOne, randomNumberTwo, randomNumberThree)
}
chosen(a:0,b:1) Output: (.00,.12,.20)
Run Code Online (Sandbox Code Playgroud)
太好了,我现在可以用这个数组索引! 谢谢!
这里没有魔术.Swift使用块作用域并switch创建一个新的作用域来防止错误,并向程序员显示变量仅在作用域中使用.如果您想使用范围之外的变量 - 在switch子句之外声明这些标识符.
var dogInfo = (3, "Fido")
var matchtrue:Int = 0 // whatever you'd like it to default to
switch dogInfo {
case(var age, "wooff"):
println("My dog Fido is \(age) years old")
case (3, "Fido"):
matchtrue = 10 --> 10
matchtrue -->10
default:
"No match"
}
matchtrue --> 10
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2047 次 |
| 最近记录: |