Ray Wenderlich的swift教程02--引用类型和值类型

以完全新手的角度,重新学一遍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]的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值