Crystal通过引用或值传递变量

如何使用Crystal选择如何通过值或引用传递变量?

例子:我想通过引用而不是Value传递一个Struct(文档解释说,当通过引用传递类时,它通过Value传递) .

回答(1)

2 years ago

你不能选择 . 您只需要记住通过值传递的 Value 对象,通过引用传递的其他对象 .

StructValue 并按值传递 . 您应该更喜欢将结构用于不可变数据类型 . 但是,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