Swift常量与变量

常量和变量都有一个名字来关联一个特定类型的值。常量的值一旦被设置就不能更改,然后变量的值被设置后,反后还可以设置其它不同的值。

定义常量和变量

常量和变量在被使用之前必须先声明。你可以用let关键字来声明一个常量,用var关键字来声明一个变量。这里我们一个关于如何用常量和变量记录跟踪用户偿试登录次数的例子

let maximumNumberOfLoginAttempts = 10(用常量记录最大登录次数)

var currentLoginAttempt = 0(用变量当前用户登录次数)

这段代码分析如下:

声明了一个叫maximumNumberOfLoginAttempts的新常量,并给它设置了一个值10。然后,又声明了一个叫currentLoginAttempt的新变量,并给它设置了一个初始值0。

在这个例子中,允许尝试登录的最大次数被声明为一个常量,因为最在登录次数从来不会被改变。当前尝试登录记数被声明为一个变量,因为每次尝试登录失败后这个值必须被增加1.

你也可以声明多个常量和多个变量在同一行内,通过逗号分隔。

例如:var x = 0.0, y = 0.0, z = 0.0

注意:

      如果在你代码里的一些值不会发生改变,总是以let关键字来创建一个常量来存储。用变量来存储一些需要可能发生改变的值。

类型注释

你可以在声明一个常量和变量时提供一个类型限制,能清楚知道这种常量和变量能存储什么样的值。通过在一个常量或者变量名后边加一个冒号(:)和在冒号后边写上具体的类型注释

下边这个例子为一个名叫welcomeMessage的变量提供了一个类型注释,它表明了这个变量用来存储一个字符串(String)值。

            var welcomeMessage: String

在这个声明中的冒号的意思是“...的类型为...”,所以上边的代码的意思是:

“声明了一个名叫welcomeMessage”类型为String的变量。

这种写法,意味着只能存储字符串值。

welcomeMessage变量现在能设置任何一个字符串类型的值而没有错误

welcomeMessage = "Hello"

你也可以在同一行中定义多个类型一样联系在一起的变量,通过逗号来分开他他们,在最后一个变量名后加一个类型注释:

    var red,green,bule: Double

注意: 在实际中你很少需要写类型注释。如果你定义一个变量或常量时提供一个初始值,Swift总能够推断出常量或者变量的类型,像在类型安全和类型推断小节中描述的一样。在welcomeMessage这个例子中,没有提供初始值,所以变量welcomeMessage指明具体类型注释还不如通过初始值来自动推断。

常量和变量的命名

常量和变量的名字可以包含任何字符和Unicode字符

  let​ ​π​ = ​3.14159
​  let​ ​你好​ = ​"你好世界"
​  let​ ​🐶🐮​ = ​"dogcow”

常量和变量名不能包含空格字符,数字符号,箭头,私有用户Unicode点,线,框绘图字符。也不能以数字开头,然后数字可以包含到名字里的任何地方。

一旦你定义了一个确定类型的常量或变量,你就不会在重复定义一个名字一样的常量或变量,或者用不同类型的值去改变它。也不能把一个常量改变为一个变量或者把一个变量改变为一个常量。

注意:如果你需要把一个常量或一个变量的名字和Swift的保留关键字一样,需要用小括号(`)把名字括起来作为常量或者变量的名字。无论如何应避免用关键字作为常量或变量的名字除非你确实没有更好的选择。

你可以用另外一个类型相同的值来更改一个变量已存在的值。在下边这个例子中friendlyWelcome的值从"hello!"改变为"Bonjour!":

         var friendlyWelcome = "hello!"

         friendlyWelcome = "Bonjour!"

        // 现在friendlyWelcome的值为"Bonjour!"

和变量不一样,常量的值一旦被设置,那么它的值就不能更改。尝试更改常量的值在你的代码被编译时会报告出一个错误:

       let languageName = "Swift"

       languageName = "Swift++"

      //这是一个编译时错误--languageName不能被更改

打印常量和变量

你可以用println函数打印出变量或常量的当前值:

    println(friendlyWelcome)

    //打印出 "Bonjour!"

println是一个用来打印输出值的一个全局函数,并输出一个换行跳出。在Xcode中,例如,println在一个名叫控制台("Console")的面板中输出结果。(另外一个函数叫print,和printl完成一样的任务只是在打印的值的末尾没有追加换行跳出)

println函数可以打印出你传递给他的任意字符串:

    println("This is a string")

    //打印输出 "This is a string"

println函数能够打印出更完整的记录信息,和Cocoa的NSLog函数的风格相似。这些消息可以包含常量或变量的当前值。

Swift可以使用并支持一些插入包含常量或变量的名字作为一个占位符的字符串,占位符为来提示Swift用常量或变量的当前值来替换相应的地方。把常量或变量的名字放到小个回括号()中,并在圆括号()前加一个反杠“\”来构造一个占位符。

     println("The current value of friendlyWelcome is \(friendlyWecome)")

     //打印输出  "The current value of friendlyWelcome is Bonjour!"

注意:关于字符串的插补的所有选项操作在”字符串插入“小节中详细讲解和说明。

 

 

 

 

 

posted on 2015-04-05 14:58  empty_cup  阅读(470)  评论(0编辑  收藏  举报

导航