国际惯例,通常学习一门新的语言,都是从'Hello, World!'开始的
我们创建一个程序,输出一句Hello, World!
,因为现在学习的是基础语法,所以我们可以在Xcode上的Playground上编写测试代码。
- 首先打开Xcode,创建一个Playground文件
- 接下来在生成的文件中增加
print
语句输出结果,如下图
到这里,你已经完成第一个程序了,接下来,开始讲变量的声明与赋值
在Swift中,变量是用来存储数据的容器。声明一个变量就是告诉编译器我们要使用一个特定的内存空间来存储数据。赋值是将数据放入已声明的变量中。
-
声明变量
想象一下,我们有一个"房子"(变量),这个房子有一个门牌号(变量名),但没有具体的地址(值)。
例如,我们使用
var
关键字声明一个名为name
的变量,但没有赋值:swiftvar name: String
这里,
name
是一个字符串类型的变量,此时,name
变量就像一个空房子,我们只知道它的门牌号,但不知道具体的地址。想象一下,我们有一个"房子"(变量)。这个房子有一个门牌号(变量名),但没有具体的地址(值)。
-
变量的赋值
现在,我们知道了这个房子的门牌号,但我们想知道这个房子具体在哪里。于是,我们为这个房子赋予一个"地址"(值)。
例如,我们给
name
变量赋值,赋值是将数据放入已声明的变量中。我们使用等号=
来进行赋值操作。swiftname = "张三的家"
现在,
name
变量不仅有门牌号(变量名),还有具体的地址(值)。因为该变量
name
用var
来声明的,在Swift中,var
表示该变量可以多次赋值,例如,我们将"房子"重新设置一个地址:swiftname = "李四的家"
-
变量的使用
当我们想使用这个房子的地址时,我们只需要说出它的门牌号(变量名),然后说出具体的地址(值)。
例如,我们可以打印出
name
变量的值:swiftprint(name)
这将输出"李四的家",如果没有重新赋值的话,将会输出第一次赋的值"张三的家",这就是我们为
name
变量赋予的地址。
-
let
和var
在Swift中,使用
let
("let there be")来声明常量,表示不可改变,使用var
("variable")来声明变量,表示可以多次改变,let
只可以赋值一次,而var
可以赋值多次。 如下图:"nameVar"变量用
var
修饰,所以改变值可以正常运行输出,而"nameLet"用let
修饰,表示常量,所以重新赋值的话就会报错无法运行程序。以下是一些常量声明的例子:
swift//一分钟有60秒 let minute: Int = 60 // 一天有24小时 let day: Int = 24 // 圆周率估算到小数点后两位3.14 let pi: Double = 3.14 // 中国的中英文名字 let chineseName: String = "中国" let englishName: String = "China"
-
类型注解 和 类型推断
Swift是一种强类型语言,这意味着我们需要明确指定变量的类型,格式为在常量或者变量名后面加上一个冒号和空格,然后加上类型名称。但是,从Swift 3开始,Swift引入了类型推断功能,可以让编译器自动推断变量的类型。如上面常量的例子是添加了类型注解的,你也可以用以下的方式声明常量或者变量:
swiftlet minute = 60 // 编译器会自动推断minute的类型为Int let pi = 3.14 // 编译器会自动推断pi的类型为Double let chineseName = "中国" // 编译器会自动推断chineseName的类型为String
在以上几个例子中,我们没有显式地声明变量的类型,而是让编译器自动推断。这对于简化代码非常有用。但是,如果编译器无法确定变量的类型,我们需要显式地声明它,这个后面再讲。
-
常量和变量的命名
常量和变量名可以包含几乎所有的字符,包括 Unicode 字符,但不能用数字或符号(除了下划线
_
)开头声明变量,也不能用系统保留关键字(例如let
和var
),变量的命名一般都要有意义,不要太随意取名字,不然代码量多的时候阅读理解难度就很大了,不利于团队协作写代码,一般都用英文命名,好的命名能更好的理解代码:swiftlet name = "jack" let π = 3.14159 let 你好世界 = "Hello,World!" let 🍎🍓 = "fruit"
-
注释
//
,///
,/*这里写注释*/
,/*!这里写注释*/
这些都是注释语句,解释代码用的,编译器运行的时候会忽略注释代码。一般添加注释是为了方便阅读代码,或者为了理清代码逻辑。
总结
所以,变量的声明就像是为一个房子定好门牌号,而变量的赋值则是为这个房子找到具体的地址。当我们需要使用这个地址时,我们只需提及房子的门牌号。