重新分配Swift让变量

时间:2015-09-01 19:46:37

标签: swift swift2

以更好地理解语言为目标的快速提问:

我了解varlet

之间的区别

var是可变的

let是最终的

我假设这两个都被写入堆栈。创建变量后,将设置它存储的对象类。是否有可能改变这一点?

let myVar = String("Hello")
// myVar.dynamicType is String
myVar.delete

let myVar = Int(123)
myVar.dynamicType is Int

有没有办法为变量重新分配内存?我想在代码的不同部分使用相同的变量名来表示不同的东西。

1 个答案:

答案 0 :(得分:1)

Swift中的标识符(常量和可变)与大多数其他静态类型检查编程语言一样,具有范围(参见Wikipedia entry),定义了它们的有效程度。范围可以是函数体,文件,模块,也可以是for循环的主体。在像Swift这样的语言中,您不能为同一范围内的两个不同值或内存单元重用相同的标识符,但您可以在两个不同的范围内执行此操作。因此,您的问题的答案是:您不能在同一范围内执行此操作,但您可以在不同的范围内执行此操作。但是请注意,您没有使用相同的内存,只是与不同内存(如果是var)或不同内存相关联的名称值(在let的情况下)。

实际上你不能delete也不能与标识符相关联的值,也不能是内存本身(因为你认为在你的例子中你认为可能)。这在具有堆栈分配实体的任何语言中都是不可能的,因为从堆栈中恢复是在当前代码块的末尾自动进行的。