内容简介:一、面试题person1.name 和 person2.name 分别是什么答案
一、面试题
class Person { var name: String var age: Int init(name: String, age: Int) { self.name = name self.age = age } }
let person1 = Person(name: "Shihu", age: 26) var person2 = person1 person2.name = "Zhangying"
person1.name 和 person2.name 分别是什么
答案
都是Zhangying
解析:
在swift中,class是引用类型(reference type), 只是指针复制而不是值复制, var person2 = person1创建一个一个person1并复制给了person2, 从这一行开始,任何person1的改变都会在person2中变化
二、Optional(可选型)是怎么实现的
:Optional类型表示: 有值 / 没有值
在Objective-C中并没有Optional类型, 只有nil,并且nil只能用于表示对象类型无值,
并不能用于基础类型(int, float),枚举和结构体,基础类型需要返回类似NSNotFound的特殊值来表示无值,
所以在Swift中定义了Optinal类型来表示各种类型的无值状态,并规定了nil不能用于非可选的常量和变量,只能用于Optinal类型.
//基本用法: var serverResponseCode: Int? = nil // serverResponseCode 现在不包含值 serverResponseCode = 404 // serverResponseCode 包含一个可选的 Int 值 404 Int? 表示serverResponseCode可以是有值的也可以是无值的 var surveyAnswer: String? //surveyAnswer 被自动设置为 nil
可选绑定:
if let constantName = someOptional { print("get the value: \(constantName)") }
//如果someOptional这个optional类型有值,创建一个叫做constantName的常量并将someOptional包含的值赋给它。
//并且因为constantName已经被optional类型包含的值初始化过,所以不需要再使用 ! 后缀来获取它的值。
强制解析/解包 ( forced unwrapping )
当确定可选类型确实包含值之后,可以在可选的名字后面加一个感叹号( ! )来获取值;
当Option == nil时,使用 ! 来获取会导致运行时错误。所以使用 ! 来强制解析值之前,一定要确定Option类型不是nil的
隐式解析可选类型 ( implicitly unwrapped optionals )
有时候在编写程序中,一个optional类型第一次被赋值后,可以确定它以后总会有值,
在这种情况下,使用它时每次都还需要判断和解包optional类型是非常低效的,因为可以确定它总会有值,
所以Swift中定义了一个隐式解析可选类型,它在使用时可以自动解析;
把( String? )改成感叹号( String! )就可以声明一个隐式解析可选类型。
let possibleString: String? = "An optional string."
let forcedString: String = possibleString! // 需要惊叹号来获取值
let assumedString: String! = "An implicitly unwrapped optional string."
let implicitString: String = assumedString // 不需要感叹号
但是需要注意:
如果你在隐式解析可选类型没有值的时候取值,会触发运行时错误,
这和你在无值的普通Optional类型后面加一个惊叹号的情景一样;
如果一个变量以后还可能变成 nil 的话,不要使用隐式解析可选类型;
并且如果需要在变量的生命周期中判断是否 是 nil 的话,请使用普通可选类型;
可以理解为隐式解析可选类型用于声明初始化时可能为nil,但之后会立刻被赋值,并且不会再变成nil的Optional类型对象
作者:石虎132
链接:https://www.jianshu.com/p/fd3be3700033
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Python面试经验总结,面试一时爽,一直面试一直爽!
- 算法面试:数组编码面试问题
- 【面试虐菜】—— JAVA面试题(1)
- 如何面试-作为面试官得到的经验
- PHP面试之网络协议面试题
- 如何克服面试紧张心理 ?(面试答题篇Ⅲ)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
互联网:碎片化生存
段永朝 / 中信出版社 / 2009-11 / 42.00元
《互联网:碎片化生存》内容简介:在世界互联网人数超过17亿,中国网民接近4亿的时候,断言“这个版本的互联网没有未来”是要冒很大风险的。我们生活在比特和连线的世界,现代互联网所描绘出的“数字化”、“虚拟化”的未来是否完全值得信赖? 现代商业取得了巨大成功,但这并不是电脑和互联网精髓的自由体现,我们所使用的这个版本的电脑和互联网只不过是“被阉割”、“被劫持”的商业玩偶。 《互联网:碎片化生......一起来看看 《互联网:碎片化生存》 这本书的介绍吧!