2017-10-07 68 views

回答

4

你不能選擇。你只需要記住這個對象是一個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

這不僅僅是壞習慣,而且實際上是不安全的代碼! –