2015-07-03 90 views
2

如果我在swift中編寫這樣的代碼,它說變量x在初始化之前使用。這在java中似乎是合法的。爲什麼這是不可能的,我該如何實現?初始化之前使用的Swift變量

var x:Int 
    var y:Int = 0 

    if (y==0) { 
     x=0 
    } 

    if (y==1) { 
     x=1 
    } 

    y=x 

回答

1

您可以使用!?定義變量沒有初始化

var x:Int? 
    var y:Int = 0 

    if (y==0) { 
     x=0 
    } 

    if (y==1) { 
     x=1 
    } 

    y=x! 

OR

var x:Int! 
    var y:Int = 0 

    if (y==0) { 
     x=0 
    } 

    if (y==1) { 
     x=1 
    } 

    y=x 
+0

什麼是您的兩個例子之間的區別? –

+0

@BlazeyJohn請參考'''和'!'之間的區別http://stackoverflow.com/questions/25895098/what-is-difference-between-and-in-swift –

0

要使用的變量,那就是你必須初始化它們的問題,或者您可以強制變量與!解開或者您可以通過使用?可選初始化它。在這種情況下,你可以使用它像

var x:Int! /// var x:Int? 
    var y:Int = 0 

    if (y == 0) { 
     x=0 
    } 

    if (y == 1) { 
     x=1 
    } 
1

非可選變量不能使用在被初始化之前。 但它可能使用,甚至let當變量可以保證被初始化,使用前

let x: Int 
    var y : Int = 0 

    if (y==0) { 
     x=0 
    } else if (y==1) { 
     x=1 
    } else { 
     x=2 
    } 

    y=x 
+0

由於Swift 1.2這個表達式是有效的:https ://developer.apple.com/swift/blog/?id = 22 – vadian

+0

很好,(Y) –