在Julia中,为什么不可变性是整体类型的“属性”(在Julia的意义上,更类似于其他语言中的结构体或类),而不是变量?
例如,在Rust(以及我认为大多数支持不可变性的语言中),是否不可变是针对特定变量设置的,而不是整体类型 - 即没有单独的
这似乎更方便,因为您可以使任何内容都是不可变的,并且变量默认情况下是不可变的(这正是Julia人员希望人们尽可能做到的[1])。 Julia方法有实用性或性能优势吗?
1:https://github.com/JuliaLang/julia/issues/13#issuecomment-11007166
例如,在Rust(以及我认为大多数支持不可变性的语言中),是否不可变是针对特定变量设置的,而不是整体类型 - 即没有单独的
Vector
vs ImmutableVector
结构。要创建不可变向量,我使用let v = Vec :: new()
。要创建可变的,我使用let mut v = Vec :: new()
。因此,mut
是可以应用于任何结构的关键字。这似乎更方便,因为您可以使任何内容都是不可变的,并且变量默认情况下是不可变的(这正是Julia人员希望人们尽可能做到的[1])。 Julia方法有实用性或性能优势吗?
1:https://github.com/JuliaLang/julia/issues/13#issuecomment-11007166
let mut v = Vec::new()
中,mut
使得v
可变,因为在 Rust 中不可变性是默认的。 - user4235730