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

Swift中的“ let”关键字到底如何工作?

艾凯捷
2023-03-14
问题内容

我已经在指南中阅读了以下简单说明:

常量的值不需要在编译时就知道,但是您必须为它赋值一次。

但是,我想比这更详细。如果常量引用了一个对象,我是否仍可以修改其属性?如果它引用一个集合,是否可以在其中添加或删除元素?我来自C#背景;它与readonly工作方式类似(除了能够在方法主体中使用它),如果不是,则有什么不同?


问题答案:

let有点像constC中的指针。如果使用引用对象let,则可以更改对象的属性或调用该对象的方法,但不能为该标识符分配其他对象。

let对集合和非对象类型也有影响。如果你引用structlet,你不能改变它的属性或调用它的任何mutating func方法。

集合使用let/
var就像可变/不可变Foundation集合一样:如果将数组分配给let,则不能更改其内容。如果您使用引用字典let,则无法添加/删除键/值对或为键分配新值-
这确实是不可变的。如果要分配数组,字典中的下标,追加或以其他方式对数组或字典进行突变,则必须使用进行声明var

(在Xcode 6 beta 3之前,Swift数组具有值和引用语义的怪异组合,并且在分配给let-时已经变得部分可变了。)



 类似资料:
  • 问题内容: ECMAScript 6应该提供块范围,而不会引起麻烦。有人可以解释为什么在函数下面的代码中解析为循环中的最后一个值(与一样),而不是当前迭代中的值吗? 根据MDN在这样的循环中使用应将变量绑定在循环主体的范围内。当我在块中使用临时变量时,事情按我期望的那样工作。为什么有必要? 我使用Traceur和来测试了脚本。 问题答案: quin着眼睛的答案不再是最新的。在ECMA 6规范中,指

  • 我刚刚阅读了关于特征以及如何在同一个用逗号分隔的php代码中使用多个php特征的信息。然而,我不明白用于在两个特征具有相同功能的情况下解决冲突的替代关键字的概念。有人能解释一下替代关键字是如何工作的吗?以及如何使用它来告诉引擎,我愿意使用特征A的函数hello()而不是特征B的函数Hello(),因为这两个特征中都有两个特征A和B以及一个函数hello()。

  • 问题内容: 我刚刚遇到了一个有趣的JavaScript情况。我有一个类,该类的方法使用对象文字表示法定义了多个对象。在这些对象内部,正在使用指针。从程序的行为,我推断出指针是指向在其上调用方法的类,而不是由文字创建的对象。 尽管这是我期望的工作方式,但这似乎是任意的。这是定义的行为吗?跨浏览器安全吗?是否有任何推理依据说明它超出了“规格说明”的范围(例如,这是某些更广泛的设计决策/理念的结果)吗?

  • Swift 2 引入了 关键字,该关键字可用于确保各种数据已配置就绪。我在这个网站上看到的一个例子演示了一个提交已开发的功能: 我想知道使用< code>guard与使用< code>if条件的老式方法有什么不同。它能给你带来用简单的支票无法得到的好处吗?

  • 问题内容: 我从一开始就阅读Java教程,并且对字段或变量上的关键字有疑问。如这里所说: 类变量是使用static修饰符声明的任何字段;这告诉编译器,无论该类被实例化了多少次,该变量确实存在一个副本。可以将定义特定类型自行车的齿轮数的字段标记为静态,因为从概念上讲,相同数量的齿轮将应用于所有情况。 这样,我想如果您有一个对象(在这种情况下,该类是一个实例),并且在其中有一个字段,则与您是否喜欢or

  • 本文向大家介绍“ this”关键字在JavaScript中如何工作?,包括了“ this”关键字在JavaScript中如何工作?的使用技巧和注意事项,需要的朋友参考一下 在JavaScript中,此关键字用作引用,以引用执行的代码的对象或主题。 示例