Crystal 通过引用或值传递变量
Crystal pass variable by reference or value
如何选择如何使用 Crystal 按值或引用传递变量?
示例:我想通过引用而不是通过值传递结构(文档解释说它通过值传递,而 类 通过引用传递)。
你无法选择。您只需要记住 Value
按值传递的对象,其他按引用传递的对象。
Struct
是一个 Value
并按值传递。您应该更喜欢将结构用于不可变数据类型。但是,Crystal 中仍然允许使用可变结构,实际上 this example 演示了如何使用方法对其进行变异。简而言之:
struct Mutable
property value
def initialize(@value : Int32)
end
end
def change(mutable)
mutable.value = 2
mutable
end
mut = Mutable.new 1
mut = change(mut)
mut.value # => 2
如何选择如何使用 Crystal 按值或引用传递变量?
示例:我想通过引用而不是通过值传递结构(文档解释说它通过值传递,而 类 通过引用传递)。
你无法选择。您只需要记住 Value
按值传递的对象,其他按引用传递的对象。
Struct
是一个 Value
并按值传递。您应该更喜欢将结构用于不可变数据类型。但是,Crystal 中仍然允许使用可变结构,实际上 this example 演示了如何使用方法对其进行变异。简而言之:
struct Mutable
property value
def initialize(@value : Int32)
end
end
def change(mutable)
mutable.value = 2
mutable
end
mut = Mutable.new 1
mut = change(mut)
mut.value # => 2