当前位置: 首页 > 面试题库 >

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

阎宾实
2023-03-14
问题内容

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

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

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


问题答案:

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

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

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

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



 类似资料:
  • 问题内容: 对于“属性”和“属性”之间的区别,我通常感到困惑,并且找不到很好的资源来简洁地详细说明这些区别。 问题答案: 属性是一种特殊的属性。基本上,当Python遇到以下代码时: 它查找中,然后检查,看它是否有一个,或方法- 如果这样做,这是一个性质。如果它 是 一个属性,则不仅会返回该对象(就像对其他任何属性一样),还会调用该方法(因为我们一直在进行查找),并返回该方法返回的内容。 有关Py

  • 问题内容: 请帮助我理解常量变量和Java变量之间的区别。我对此有些困惑。 问题答案: 常量 是概念,是变量的属性。 是用于声明常量变量的java关键字。 正如其他人所指出的那样,从语义/语言的观点来看, 常量变量 的表达是矛盾的,因此,我们可以争论其正确性。 引用规范,无论如何,我们可以阅读 原始类型的最终变量,并使用编译时常数表达式(第15.28节)进行了初始化,称为 常量变量 。 因此,我想

  • 我目前正试图理解字段之间的差异(https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-fields.html)和属性(https://www.elastic.co/guide/en/elasticsearch/reference/current/properties.html). 它们都以某种方式定义为类型/映射

  • 问题内容: 可以在这里找到代码: 我发现有内标记,也有内标签。它们都是必需的吗?(在这种情况下,CSS似乎覆盖了HTML属性)关于它们之间的区别是否有任何解释? 问题答案: 我检查了文档,但是它们并不清楚如果同时设置了它们。 那藏在这里的某个地方: UA可以选择使用HTML源文档中的表示属性。如果是这样,则将这些属性转换为对应的CSS规则,其特异性等于0,并且将其视为在作者样式表的开头插入。因此,

  • 问题内容: 我对此不清楚。当我运行Java App或在小程序查看器中运行小程序时(在IDE环境中), 给我的含义与env变量中定义的CLASSPATH 相同。 但是,当我将applet部署到Web服务器并从与客户端相同的计算机上访问它时,两者的结果不同。(仅指向JRE主页,并返回null)。 还有其他一些让我感到奇怪的事情: 对于小程序部分,即env var JAVA_HOME,在将小程序部署到浏

  • 问题内容: 之间是否存在有意义的区别: 与 如果要创建很多实例,这两种样式在性能或空间要求上是否有任何区别?阅读代码时,您是否认为两种样式的含义有明显不同? 问题答案: 除了性能方面的考虑外,还有明显的语义差异。在类属性的情况下,仅引用一个对象。在实例属性设置实例中,可以有多个引用对象。例如