Swift--变量和常量

声明常量和变量 
常量和变量必须在使用前声明,用 let 来声明常量,用 var 来声明变量。下面的例子展示了如何用常量和变量来记录用户尝试登录的次数:
1.  let maximumNumberOfLoginAttempts = 10  
2.  var currentLoginAttempt = 0
可以在一行中声明多个常量或者多个变量,用逗号隔开:
1.  var x = 0.0, y = 0.0, z = 0.0 

类型标注 
当你声明常量或者变量的时候可以加上类型标注(type annotation),说明常量或者变量中要存储的值的类型。如果要添加类型标注,需要在常量或者变量名后面加上一个冒号和空格,然后加上类型名称。 
这个例子给 welcomeMessage 变量添加了类型标注,表示这个变量可以存储 String 类型的值:
1.  var welcomeMessage: String 
注意:一般来说你很少需要写类型标注。如果你在声明常量或者变量的时候赋了一个初始值,Swift 可以推断出这个常量或者变量的类型,请参考类型安全和类型推断。在上面的例子中,没有给 welcomeMessage 赋初始值,所以变量 welcomeMessage 的类型是通过一个类型标注指定的,而不是通过初始值推断的。

常量和变量的命名 
你可以用任何你喜欢的字符作为常量和变量名,包括  Unicode  字符:
1.  let π = 3.14159 
2.  let 你好 = "你好世界"  
3.  let ???????? = "dogcow"
  常量与变量名不能包含数学符号,箭头,保留的(或者非法的)Unicode  码位,连线与制表符。也不能以数字开头,但是可以在常量与变量名的其他地方包含数字。
一旦你将常量或者变量声明为确定的类型,你就不能使用相同的名字再次进行声明,或者改变其存储的值的类型。同时,你也不能将常量与变量进行互转。 

注意:如果你需要使用与 Swift 保留关键字相同的名称作为常量或者变量名,你可以使用反引号(`)将关键字包围的方式将其作为名字使用。无论如何,你应当避免使用关键字作为常量或变量名,除非你别无选择。你可以更改现有的变量值为其他同类型的值,在下面的例子中,friendlyWelcome 的值从"Hello!"改为了"Bonjour!": 
1.  var friendlyWelcome = "Hello!"  
2.  friendlyWelcome = "Bonjour!"  
3.  // friendlyWelcome 现在是 "Bonjour!" 

输出常量和变量 
你可以用 println 函数来输出当前常量或变量的值: 
1.  println(friendlyWelcome)  
2.  // 输出 "Bonjour!"  
  println 函数输出传入的 String 值: 
1.  println("This is a string")  
2.  // 输出 "This is a string"  
与  Cocoa 里的 NSLog 函数类似的是,println 函数可以输出更复杂的信息。这些信息可以包含当前常量和变量的值。 Swift  用字符串插值(string interpolation)的方式把常量名或者变量名当做占位符加入到长字符串中,Swift  会用当前常量或变量的值替换这些占位符。将常量或变量名放入圆括号中,并在开括号前使用反斜杠将其转义: 
1.  println("The current value of friendlyWelcome is \(friendlyWelcome)") 
2.  // 输出 "The current value  of friendlyWelcome  is Bonjour!  


类型安全和类型推测
Swift  是一个类型安全(type safe )的语言。类型安全的语言可以让你清楚地知道代码要处理的值的类型。如果你的代码需要一个 String,你绝对不可能不小心传进去一个 Int。  
由于  Swift  是类型安全的,所以它会在编译你的代码时进行类型检查(type checks),并把不匹配的类型标记为错误。这可以让你在开发的时候尽早发现并修复错误。 
当你要处理不同类型的值时,类型检查可以帮你避免错误。然而,这并不是说你每次声明常量和变量的时候都需要显式指定类型。如果你没有显式指定类型,Swift  会使用类型推测(type inference)来选择合适的类型。有了类型推测,编译器可以在编译代码的时候自动推测出表达式的类型。原理很简单,只要检查你赋的值即可。 
因为有类型推测,和  C 或者  Objective-C 比起来  Swift  很少需要声明类型。常量和变量虽然需要明确类型,但是大部分工作并不需要你自己来完成。 
  
当你声明常量或者变量并赋初值的时候类型推测非常有用。当你在声明常量或者变量的时
候赋给它们一个字面量(literal value 或  literal)即可触发类型推测。(字面量就是会直接出现在你代码中的值,比如 42 和 3.14159。) 

例如,如果你给一个新常量赋值 42 并且没有标明类型,Swift 可以推测出常量类型是Int,因为你给它赋的初始值看起来像一个整数: 
1.  let meaningOfLife = 42  
2.  // meaningOfLife 会被推测为 Int 类型  
同理,如果你没有给浮点字面量标明类型,Swift  会推测你想要的是 Double: 
1.  let pi = 3.14159  
2.  // pi 会被推测为 Double 类型  
当推测浮点数的类型时,Swift  总是会选择 Double 而不是 Float。如果表达式中同时出现了整数和浮点数,会被推测为 Double 类型: 
1.  let anotherPi = 3 + 0.14159  
2.  // anotherPi 会被推测为 Double 类型  
原始值 3 没有显式声明类型,而表达式中出现了一个浮点字面量,所以表达式会被推测为Double 类型。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章