一般情况下,当我们学习一种新语言的时候,我们都会写一个Hello World小程序,在swift中,我们可以通过一行内容来实现。
println("Hello,world") //注释:输出HelloWorld
如果你写过C与OC的代码,这个语句对你来说可能很熟悉,在swift中,这样一行代码是一个完整的程序,你并不需要去为它导入一个其他的功能库,类似input/output或者字符串句柄。写在全局范围的代码会被作为程序的入口,所以你不需要一个main函数,你也不需要在每个语句的最后写上分号。
这个入门教程通过一系列的小程序来帮助你使用swift来编写程序。如果你无法理解其中的某些内容,请不要觉得担心,因为这本书的最后都会有更详细的解释。
提示
基于经验,你最好在xcode中打开playground来查看本章内容的代码。
playground可以让你编辑代码,并且立刻看到效果
我们使用let关键词来定义常量,并使用var关键词来定义变量,常量的值在编译时可以不确定,但你只能为他赋一次值(译者注:你可以为常量赋一个变量,编译时并不知道变量的值,但你只能为常量复值一次,在定义的时候)。这意味着你可以为一个值起一个名字,然后在许多地方被使用到(译者注:类似宏定义)
var myVariable = 42
myVariable = 50
let myConstant = 42
注释:定义了一个变量myVariable,初始值为42,然后改变了改值
第三句定义了一个常量,值为42
变量与常量的值必须与你的值类型相同,但你并不需要定义时就明确类型,你为变量与常量创建值的时候编译器会自动定义他的类型,在如上的例子中,编译器会找到myVariable为整型,因为它的初始值为整型。(译者注:可以写个小例子,将一个变量初始值为整型,然后赋String值,会报错,说类型不能转换)
若初始化的值并未提供了足够的信息、或更本为提供初始值,可以使用在变量或常量名后跟上冒号与类型来定义类型(译者注:言外之意就是,如果没初始值,或者初始值与你想要的类型不同,你必须提供一个类型,这个编译器自动类型匹配好鸡肋,是项目不稳定的一个发生点,建议最好都定义上类型)
let implicitInteger = 70
let implicitDouble = 70.0
let explicitDouble: Double = 70
注释:第三种为强制定义double型
测试
尝试创建一个常量绝对定义为Float型,然后传入一个4的值
值不能被隐式转换为其他类型,明确需要转换的类型
let label = "The width is "
let width = 94
let widthLabel = label + String(width)注释,width会成为Int型,label是String型,然后通过String()将width转换为String型,并与label合并赋给widthLabel
测试
尝试去除上面的String()看看会出什么错(译者答案:运算符+重载失败)
还有一个更简单的方式来将值转换为String,通过”\(…)”这样的方式,例如:
let apples = 3
let oranges = 5
let appleSummary = "I have \(apples) apples."
let fruitSummary = "I have \(apples + oranges) pieces of fruit.注释:String转换运算符,注意这个运算符只能用在“”中
测试
使用\()运算符来将一个浮点型
class="p1">创建一个数组或者字典,可以使用[]运算符,然后将元素与数组序号或字典键值写在[]中,例如:
var shoppingList = ["catfish", "water", "tulips", "blue paint"]
shoppingList[1] = "bottle of water"
var occupations = [
"Malcolm": "Captain",
"Kaylee": "Mechanic",
]
occupations["Jayne"] = "Public Relations注释:数组、字典的定义与元素的定义
可以使用初始化语句来创建一个空数组或字典,例如:
let emptyArray = String[]()
let emptyDictionary = Dictionary<String, Float>()
如果类型星系可以在随后的代码中被推测到,可以通过创建一个不指明类型的数组与不指明类型的字典,通过空的[]或[:],例如:
var shoppingList = []
var shoppingDict = [:]
注释:创建一个空数组与一个空字典
第一部分完