一尘不染

Swift中的属性和变量之间有什么区别?

swift

从一些初始教程中,我看到属性属于类,并且本质上是C
++世界中使用的“全局变量”(在几年前进行了编码)。我也将变量视为更多的“本地”实体,仅在方法中使用/存储信息。

然后我遇到了这个Quora线程:https :
//www.quora.com/Apple-Swift-programming-language/What-is-the-difference-
between-a-property-and-a-variable
现在,我看到了属性能够执行与其调用相关的代码。这很酷,但也给我带来了很多其他问题。

还有其他简单明了的方式来记住属性和变量之间的区别吗?


阅读 308

收藏
2020-07-07

共1个答案

一尘不染

局部变量就是您要使用的东西。您可以完全控制这些内容,并且如果您在函数中更改变量,则函数之外的任何事情都将一无所知。如果我编写了一个框架并使用了它,并且决定更改某个函数的局部变量,那么使用我的框架的应用程序将继续正常工作,就好像什么都没有改变一样。

另一方面,类描述合同。使用课程时,您可以访问他们公开宣传的所有内容。这意味着,如果我编写了一个框架并使用了它,并且曾经更改或删除了一个类的公共成员,则如果您以前使用该成员,则代码将中断。

因此,在许多语言中,将实例变量标记为公共是不好的做法。没有逻辑的实例变量,如果我想在某个时候更改某个字段时触发某件事,或者如果我想完全删除该字段(而是报告子对象或某物中的值),那么我会陷入困境更改公共合同(例如,以一对get/
set方法转换字段),并可能破坏您的代码。

因此,Swift使属性成为间接的。Swift属性在大多数情况下都可以视为愚蠢的值,但是如果您需要将存储值更改为计算值之类的东西,则可以在不更改类接口的情况下执行。这样,您就不会破坏依赖于该属性的现有代码。

2020-07-07