3
我對使用class_eval
的Ruby可變範圍的最佳實踐有個疑問。class_eval的類級變量的替代方法?
在此代碼中,在class_eval
塊中,局部變量的第一個和第二個未定義。
def parent_method(opts={})
first = opts[:percent]
second = (10 * first).to_i
SecondClass.class_eval do
def second_method; return {:a => first, :b => second}; end;
end
end
這似乎是一個範圍的問題,因爲我發現得到這個工作的唯一方法是使第一和第二類級別的變量:
def parent_method(opts={})
@@first = opts[:percent]
@@second = (10 * @@first).to_i
SecondClass.class_eval do
def second_method; return {:a => @@first, :b => @@second}; end;
end
end
- 是什麼這種情況下的最佳做法?我認識到全局變量對於這個場景來說是一個糟糕的選擇,因爲結果的範圍很廣,但是類變量變量同樣不受歡迎?
- 除了處理變量作用域外,還有其他方法來處理
class_eval
中這些變量的可訪問性嗎?
太棒了!謝謝 - 這個作品! – shedd 2010-07-02 21:10:39