Swift 1.0 or later
思考下面的问题:
1 2 3 4 5 6 7 | struct Tutorial { var difficulty: Int = 1 } var tutorial1 = Tutorial() var tutorial2 = tutorial1 tutorial2.difficulty = 2 |
tutorial1.difficulty 和 tutorial2.difficulty的值分别是多少?假如Tutorial是一个类,会有什么不同?并说明原因。
tutorial1.difficulty 的值是1,然而tutorial2.difficulty的值是2.
在Swift中结构体是值类型,他们的值是复制的而不是引用的。下面的一行代码意思是复制了tutorial1的值并把它赋值给tutorial2:
从这一行开始,tutorial2值得改变并不影响tutorial1的值。
假如Tutorial是一个类,tutorial1.difficulty和tutorial2.difficulty的值将都会是2.在Swift中类对象都是引用类型。tutorial1属性的任何改变将会反应到tutorial2上,反之亦然。