“未解决的标识符”意外出现

时间:2015-07-18 20:30:59

标签: swift

我是Swift的新手,现在还不懂。 我想要做的是创建一个不等于leegRectY的变量。 leegRectY中有一个yGrid[]。所以我创建变量randomm并继续这样做,直到它不等于leegRectY。但是当我想要返回时randomm Xcode表示还没有确定。但我已经确定了randomm

我知道我做错了什么,所以请善待; - )

由于

func getRectY() -> CGFloat {
    let yGrid:Array = [(CGRectGetMaxY(frame)/4 * 0),
        (CGRectGetMaxY(frame)/4 * 1),
        (CGRectGetMaxY(frame)/4 * 2),
        (CGRectGetMaxY(frame)/4 * 3)]

    for(var i=0; i < 1000; i++){
        var randomm = yGrid[Int.random(0...3)]
        if leegRectY != randomm { break }
    }
    return CGFloat(randomm)  // XCODE: Use of unresolved identifier 'randomm'
}

修改

变量仅在此函数中定义,或者仅在for循环中定义。因此,当我在循环之前放置var randomm = 0时,值不会从nil变化。也许这对你来说是有用的信息......

1 个答案:

答案 0 :(得分:0)

&#34;身体&#34; for-statement是一个&#34;代码块&#34;

{ statements... }

和Swift(以及许多其他编程语言) 变量只有&#34;有效&#34;在他们的代码块里面 宣布。更确切地说,变量的范围的范围从其声明到 声明它的最近的封闭代码块的结尾。

在您的情况下,var randomm在代码块中声明 for-statement,并且在该块之外是未知的。

您必须在函数范围内声明变量:

func getRectY() -> CGFloat {
    // ...

    var randomm = CGFloat(0.0)
    for (var i=0; i < 1000; i++){
        randomm = yGrid[Int.random(0...3)] // <-- no "var" here !!!
        if leegRectY != randomm { break }
    }
    return randomm
}

或者可能稍微简单一些:

func getRectY() -> CGFloat {
    // ...

    var randomm : CGFloat
    do {
        randomm = yGrid[Int.random(0...3)]
    } while leegRectY == randomm
    return randomm
}