2012-09-20 58 views

回答

5

我的第一個直覺是告訴你不要使用instance_variable_set,除非你真的知道你在用什麼。它本質上是一種元編程工具或繞過實例變量可見性的黑客工具。

也就是說,如果沒有設置該變量的設置程序,則可以使用instance_variable_set將其設置爲。如果你控制代碼來創建一個setter,那會好很多。

嘗試查看絕大多數實例變量設置需求的accessors。他們是一種慣用的方式,讓你的實例變量的getter和setter「免費」,而無需編寫這些函數。

如果你真的需要instance_variable_set,它允許第一個參數是一個symbol這是要設置的實例變量的名稱。冒號是Ruby語言的一部分,類似於「符號字面量」:當您鍵入:foo時,您創建了一個帶有值foo的符號,就像直接在代碼中鍵入"bar"一樣,您將創建一個帶有值的字符串文字「酒吧」。

+0

這不是我使用它,它是rabl圖書館:)我只是想提交一個拉請求來解決我引用的問題,但是我不想在沒有完全知道修復工作原因的情況下提交它。 – you786

+0

他們*使用它進行元編程,但不能改變現有的變量。他們正在創建實例變量供用戶稍後使用。另外,set_instance_variable *的第一個參數可以是一個字符串。 – you786

+0

我剛剛發現,當通過Ruby源代碼:)編輯答案... – Matt