按照国际惯例,学习一门新语言写的第一个程序都是在屏幕上输出一句 “Hello,world!” 。在Swift里,一行代码就搞定了:
println@H_502_6@("Hello,world!"@H_502_6@)@H_502_6@@H_502_6@
如果你以前写过C或者Objective-C的代码,这个语法你肯定看着很眼熟——在Swift里,这行代码就已经是一个完整的程序了。你不需要单独导入用于像输入/输出或者字符串处理功能的类库。写在全局范围内的代码就用来作为程序的入口点,所以不需要main函数。也不需要在每一行语句后面加上分号。
本系列教程通过完成一系列编程实例来提供给你足够的信息,让你能用Swift开始写代码。如果有些东西看不懂,别担心——本教程介绍的所有内容都会在其它文章里详细解释。
注意
为了最佳体验,你可以在Xcode里新建一个playground,把本教程用到的代码敲到playground里。playground可以在你写完代码以后马上看到输出的结果
定义常量使用 let ,定义变量,使用var。常量的值在编译时不需要知道,但必须只能赋一次值。也就是说可以用常量来为一个值进行命名,一次赋值多次使用。
var@H_502_6@ myVariable = 42@H_502_6@
myVariable = 50@H_502_6@
let@H_502_6@ myConstant = 42@H_502_6@
常量或变量都必须与其指定的值具有相同的类型。不过,你不必显式写出类型来。在定义常量或变量的时候提供一个值,编译器就会自己推测它的类型。上面的例子,编译器推测myVariable是一个整型,因为它的初始值是个整型。
如果初始值没有提供足够的信息(或者没有初始值),那就在变量名后面写上冒号,再加上类型名。
let@H_502_6@ implicitInteger = 70@H_502_6@
let@H_502_6@ implicitDouble = 70.0@H_502_6@
let@H_502_6@ explicitDouble: Double@H_502_6@ = 70@H_502_6@
试一试
定义一个常量,显式指定其类型为Float,值为4
值是不会隐式地转换为其它类型的。如果需要将值转换为不同类型,需显示创建目标类型的实例。
let@H_502_6@ label = "The width is "@H_502_6@
let@H_502_6@ width = 94@H_502_6@
let@H_502_6@ widthLabel = label + String@H_502_6@(width)
试一试 试着把最后一行字符串转换去掉,看看会有什么错误?
在字符串里加入值还有个更简单的方法:将值写在括号里,再在括号前加上反斜杠()。如:
let@H_502_6@ apples = 3@H_502_6@
let@H_502_6@ oranges = 5@H_502_6@
let@H_502_6@ appleSummary = "I have \(apples) apples."@H_502_6@
let@H_502_6@ fruitSummary = "I have \(apples + oranges) pieces of fruit."@H_502_6@
试一试
用 \() 在字符串里加入浮点数运算,再在问候语里加入某人的名字试试
要创建数组和字典,使用方括号([]),要访问他们的元素,就在方括号里写索引活着键名。
var@H_502_6@ shoppingList = ["catfish"@H_502_6@,"water"@H_502_6@,"tulips"@H_502_6@,"blue paint"@H_502_6@]
shoppingList[1@H_502_6@] = "bottle of water"@H_502_6@
var@H_502_6@ occupations = [
"Malcolm"@H_502_6@: "Captain"@H_502_6@,"Kaylee"@H_502_6@: "Mechanic"@H_502_6@,]
occupations["Jayne"@H_502_6@] = "Public Relations"@H_502_6@
要创建一个空数组或字典,使用以下初始化语法。
let@H_502_6@ emptyArray = [String@H_502_6@]()
let@H_502_6@ emptyDictionary = [String@H_502_6@: Float]()
如果类型可以推断出来,可以就写[]表示空数组,[:]表示空字典——例如,当为变量设置新值或传参数到函数的时候。
shoppingList = []@H_502_6@@H_502_6@
occupations = [:]@H_502_6@@H_502_6@