2014-11-03 51 views
1

Swift programming language我們可以宣佈這樣一個常數:迅速聲明一個常量,而不讓

let sth = "something" 

,但我發現,我們可以寫

window = UIWindow(frame: UIScreen.mainScreen().bounds) 

它不使用關鍵字讓,所以那是什麼意思?

回答

5

這意味着您正在修改某個類的現有實例屬性。我猜你是在你的應用程序代理或UIView子類中做過的。

通常情況下,你必須使用letvar,所以如果你能夠分配一個值window沒有那是因爲你所在的範圍已經有了它宣佈這些關鍵字之一。

+0

謝謝,我認爲這是最合適的解釋 – Henry 2014-11-03 05:50:22

0

任何聲明,無論是常量還是變量,都必須使用let(對於常量)和var(對於變量)關鍵字進行聲明。例如

var window = UIWindow(frame: UIScreen.mainScreen().bounds) 
let window2 = UIWindow(frame: UIScreen.mainScreen().bounds) 

window是因爲它被創建使用varwindow2是常數,因爲它是使用let創建的變量。現在,在下面

window = UIWindow(frame: UIScreen.mainScreen().bounds) 
window2 = UIWindow(frame: UIScreen.mainScreen().bounds)//error 

行的代碼1將正常工作,但第2行會給出一個錯誤,因爲你不能重新分配一個值恆定。

你可以在遊樂場試試上面的代碼並檢查錯誤。

1
window = UIWindow(frame: UIScreen.mainScreen().bounds) 

如果你正在嘗試寫這樣的代碼,那麼你必須聲明一個變量是這樣的:

var window: UIWindow? 

關鍵字來定義常量。而且它的價值不能在後面改變。 Var用於定義變量。

您可以在不聲明變量的情況下嘗試以上代碼行。它肯定會給你一個錯誤。