如何使用Crystal?
选择如何通过值或引用传递变量?例子:我想通过引用而不是Value传递一个Struct(文档解释说,当通过引用传递类时,它是通过Value传递的。)
答案 0 :(得分:6)
你无法选择。您只需要记住通过值传递的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