我是从c++来的,现在学习Swift,我在理解Swift const概念方面有一些问题。这段代码来自一本IOS开发书,我很难理解为什么这是工作的。
let firstFrame = CGRect(x: 160, y: 240, width: 100, height: 150)
let firstView = UIView(frame: firstFrame)
firstView.backgroundColor = UIColor.blueColor()
view.addSubview(firstView)
据我所知:firstView是一个恒定的UIView对象,但即使对象是恒定的,完全初始化,我可以在下一行改变UIView成员的值?
我很困惑,有人能向我解释一下吗,因为在c++中这是不可能的,或者我忽略了什么?
的问候Ruvi
这里有一篇很好的文章讨论这个:Swift中的不可变模型。
简而言之,类是引用类型,通过以下语句:
let firstView = UIView(frame: firstFrame)
你只需要确保firstView
所指向的引用不会改变,内部属性会改变。这是类与结构体的区别,结构体确保里面的值永远不会改变(除非指定为mutating
,但那是离题的)。