Hãy ví dụ này:Block Ruby chuỗi thay vì thực hiện
write_as_string { puts 'x' }
sau đó tôi muốn để có thể làm
def write_as_string(&block)
puts block.to_s
end
Khi tôi thực hiện điều này, tôi muốn đầu ra là:
"puts 'x'"
Tôi muốn có thể nhận được khối và nhận mã thực tế cho khối thay vì thực hiện nó.
Động lực: Tạo DSL, tôi muốn mô phỏng được chuyển đổi thành một số cuộc gọi phương thức khác, ẩn từ mã gọi - sử dụng các đối tượng và phương thức hiện có mà không cần khỉ vá chúng.
Bất kỳ ý tưởng nào về điều này đều tuyệt vời!
Cảm ơn
Bến
Điều đó có vẻ thú vị. Nhưng với ví dụ sau, tôi cần bằng cách nào đó lấy khối được định nghĩa như một chuỗi. Làm thế nào tôi có thể làm điều này? ruby = "def \ n puts 'A' \ Nend \ n \ NDEF b \ na \ Nend" phân tích cú pháp = RubyParser.new ruby2ruby = Ruby2Ruby.new sexp = parser.process (ruby) Hoặc có Tôi bị mất một cái gì đó? –
nếu bạn không quan tâm đến 1,9 khả năng tương thích, tôi sẽ giới thiệu câu trả lời của @ mletterle. – austinfromboston