以完全新手的角度,重新学一遍swift教程,简单的内容就不记录。
tutorial1,playground写程序,右边可以实时观察到运行结果,想要更好的观察输出结果, select View\Assistant Editor\Show Assistant Editor.,最右侧就可以看到一个Console Output。
在while循环中使用break和continue,break是跳出循环,continue是回到循环开始的地方(即此次循环体内后面的语句不执行)。
当对不同函数调用,不知一个变量是否有值的时候,引入了可选类型optional,没有值就为ni。声明时在类型名后面加?就是一个optional类型了,常常用“if let num = optionalNum”类似的if let......,来判断optionalNum是不是nil。
类型转换
把字符的整型数字转化为整型数字,toInt()函数,languagesLearnedNum是值为3的Int类型,用了可选类型Int?,因为toInt结果可能不存在,所以要用可选型。
var languagesLearned:String = "3"
var languagesLearnedNum:Int? = languagesLearned.toInt()</span></span>
tutorial2,由于playground不能输入数据,所以新建Command Line Application来调用自己写的input()函数
注意在if-else内部定义的量生命周期只在函数体内,如下由于guess是在if-else内部定义的,外部不能使用guess,所以if(guess > answer)...会提示guess未被定义
if let guess = userInput.toInt() {
println("guess is \(guess)")
}else{
println("guess is not a Int")
}
if(guess > answer) {
println("Lower!")
}...</span></span>
tutorial3,类和对象,类是描述对象的蓝图,它确定了对象的行为和属性。
数组people,那么数组元素个数people.count(),遍历数组所有元素,onePerson不用定义
for onePerson in people {
...
}</span>
出现了一个问题:最后的结果怎么不是“eric John”,却是“John John”
把class改为struct后,就是我需要的结果“eric John”,
class和struct,区别在与class引用类型,struct是值类型,http://blog.csdn.net/zhangao0086/article/details/38704519
在第一个实例里class引用类型有people[0],people[1]和aa,do-while实现的是把aa值赋值给people[0],aa和people[0]共同指向同一块数据“,不妨记为data,data内容是eric,11”,aa修改为“John,22”,也就说data的被修改了,因此相应的people[0]被修改了。
在第二个实例里struct值类型,在赋值过程中,是创建一个新的独立实例,所以aa的值改变,不会使得people[0]。
修改第一个实例的“var aa = Person()”放到do-while里面的话,也是可以实现的,因为每次循环都声明一次aa,要认识到每一次的aa是没有关系的,aa只是一个代号而已,就像名字一样,重名的人一样,互相是不同的人,因此新的aa与people[0]无关,不会修改people[0]的值。