拿這個例子:紅寶石塊字符串,而不是執行
write_as_string { puts 'x' }
話,我希望能夠做到
def write_as_string(&block)
puts block.to_s
end
當我執行此,我想輸出是:
"puts 'x'"
我希望能夠接收塊並獲得該塊的實際代碼而不是執行它。動機:創建一個DSL,我希望模擬可以轉化爲其他一些方法調用,從調用代碼中隱藏起來 - 使用現有的對象和方法而不用猴子修補它們。
任何想法都會很棒!
感謝
本
這似乎很酷。但是,考慮到下面的例子,我需要以某種方式將定義的塊作爲一個字符串。我怎麼能這樣做? 紅寶石= 「DEF一個\ n看跌期權 'A' \ NEND \ n \ NDEF b \ NA \ NEND」 解析器= RubyParser.new ruby2ruby = Ruby2Ruby.new SEXP = parser.process(紅寶石) 或者有我錯過了什麼? – 2010-01-17 21:42:15
如果你不關心1.9兼容性,我會推薦@ mletterle的答案。 – austinfromboston 2010-01-20 04:01:05