即使初始化之后,Let常量似乎也是可变的

  • 本文关键字:常量 初始化 之后 Let swift
  • 更新时间 :
  • 英文 :


我是从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,但那是离题的)。

最新更新