微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Swift中增加switch-case /循环中的变量范围?

如何使用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'

这是我解决的问题:

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)

太好了,我现在可以用这个数组索引!谢谢!

这里没有魔术. Swift使用块作用域,交换机创建一个新的作用域以防止错误并向程序员显示变量仅在作用域中使用.如果您想使用范围之外的变量 – 在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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐