Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective-C const和let Swift在运行和编译时方面的差异_Swift_Objective C - Fatal编程技术网

Objective-C const和let Swift在运行和编译时方面的差异

Objective-C const和let Swift在运行和编译时方面的差异,swift,objective-c,Swift,Objective C,我试图找出Objective-C和Swift常数之间的区别。我刚读了一篇教程文档 //Objective-C const int number = 0; //Swift let number = 0 “常量是在编译时初始化的变量,其值或表达式必须在编译时解析。 使用let创建的不可变项是在运行时确定的常量。您可以使用静态或动态表达式对其进行初始化。这允许进行如下声明: 请注意,只能为其赋值一次。” 有人能解释一下这些短语并深入解释一下为什么让常数在运行时确定吗?我一直认为let是常量,永远不会

我试图找出Objective-C和Swift常数之间的区别。我刚读了一篇教程文档

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

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


有人能解释一下这些短语并深入解释一下为什么让常数在运行时确定吗?我一直认为let是常量,永远不会改变。

let的意思是一旦赋值,就不能改变。编译器将强制执行该操作。像“let now=Date()”这样的表达式不能在编译时确定,但在编译时可以禁止重新分配到“now”。。“let pi=3.141”可以在编译时确定,从而实现优化,这与C的常量类似


注意:对于引用类型(类),let意味着指定的对象将继续是同一个对象,但这并不意味着对象本身不能或不改变。

@SandeepBhandari您能用代码解释一下区别是什么吗?这是否回答了您的问题@Sandeep谢谢,但关于编译和运行时,还没有答案difference@drainopener:您可能可以使用您提到的教程链接更新问题,您所指的是苹果官方文档吗?有趣的问题,尽管因此+1。保持链接发布只是想知道你的意图author@Sandeep这是raywenderlich面试问题谢谢,但我不能完全理解你的答案。我也不知道C.Swift
let now=Date()
与Objective-C
const NSDate*now=[[NSDate alloc]init]相同吗?引用类型的NOLET对象类似于常量指针,而不是指向常量的指针。在类型后面用常量拼写
let higherNumber = number + 5