1
我嘗試從運行時添加的方法更改實例屬性,並在流方法中繼續使用相同的方法。從實時添加的方法更改實例屬性
class Test
def start
@s = 5
puts "start #{@s}"
end
def test_1
@s = 4
puts "test_1 #{@s}"
end
def flow
start
test_2
puts "flow #{@s}"
end
end
Test.class_eval("def test_2\n puts 'test_2 1 #{@s}'\n @s = 7\n test_1\n puts 'test_2 2 #{@s}'\n end\n")
t = Test.new
t.flow
的,結果是: 開始5 test_2 1 TEST_1 4 test_2 2 流4
所以我coudl沒有弄清楚什麼是跳過test_2的打印的原因1打印以及爲什麼類屬性的值未從新評估的方法更新。
感謝您的回覆。這只是DSL的簡化示例,它基於從UI定義的方法並存儲在數據庫中。我的問題是,新方法的評估和獲得類屬性不退出該方法後更新這些歸因。假設我有一個定義爲類屬性的字符串數組。在一個評估方法中,我改變了Array中的一個字符串,並且在退出後,我沒有看到這個String在這個類的下一個方法中被改變了。假設這是一個錯字錯誤或者可能是我錯過了一些裏比原則 – user1087894