2014-11-03 59 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用于定义变量。

您可以在不声明变量的情况下尝试以上代码行。它肯定会给你一个错误。