【问题标题】:Differences Objective-C const and let Swift in terms of run and compile timeObjective-C const 和 let Swift 在运行和编译时间方面的差异
【发布时间】:2021-06-24 19:33:43
【问题描述】:

我正在尝试找出 Objective-C 和 Swift 常量之间的区别。我刚刚看了一个教程文档

//Objective-C
const int number = 0;
//Swift
let number = 0

“const 是在编译时初始化的变量,其值或表达式必须在编译时解析。 使用 let 创建的不可变对象是在运行时确定的常量。您可以使用静态或动态表达式对其进行初始化。这允许声明如下:

let higherNumber = number + 5

请注意,您只能为其赋值一次。"

有人可以解释这些短语并深入了解为什么让常量在运行时确定吗?我在想 let 是不变的,永远不会改变。

【问题讨论】:

  • @SandeepBhandari 你能用代码解释一下有什么区别吗?
  • 这能回答你的问题吗? Is swift let equivalent to objective-c const?
  • @Sandeep 谢谢,但没有关于编译和运行时差异的答案
  • @drainopener:您可能可以通过您提到的教程链接更新问题,您指的是官方苹果文档吗?有趣的问题虽然因此+1。保持链接发布只是想知道作者的意图是什么
  • @Sandeep 这是 raywenderlich 的面试问题

标签: swift objective-c


【解决方案1】:

Let 表示一旦赋值就不能更改。编译器将强制执行。像“let now=Date()”这样的表达式不能在编译时确定,但在编译时你可以禁止重新分配给“now”..“let pi = 3.141”可以在编译时确定,启用优化和就像C的const

注意引用类型(类) let 表示分配的对象将继续是同一个对象,这并不意味着对象本身不能或不会改变。

【讨论】:

  • 谢谢,但我无法完全理解您的回答。我也不知道C。
  • Swift let now=Date() 和 Objective-C const NSDate *now = [[NSDate alloc] init]; 一样吗?
  • No let 引用类型的对象就像一个常量指针而不是指向常量的指针。在类型之后用 const 拼写
猜你喜欢
  • 1970-01-01
  • 2017-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-26
  • 2010-12-29
  • 2013-04-02
相关资源
最近更新 更多