晶体通过参考或值变量

问题描述:

如何选择如何通过值或参考使用晶体传递变量?晶体通过参考或值变量

举例:我想通过引用传递一个Struct而不是Value(文档解释说,它是通过Value传递的,而类是通过引用传递的)。

你不能选择。你只需要记住这个对象是一个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 
+0

使用指针绑定外或特殊性能优化当然不是最佳实践。 –

+0

@JonneHaß谢谢,您的评论以粗体显示给答案 –

+0

这不仅仅是坏习惯,而且实际上是不安全的代码! –