Tôi là một newb đang làm việc thông qua một số hướng dẫn Ruby và được stumped về việc sử dụng các phương pháp send
dưới đây. Tôi có thể thấy phương thức gửi đang đọc giá trị của trình vòng lặp thuộc tính, nhưng tài liệu Ruby nêu rõ phương thức gửi có phương thức được thêm trước bằng dấu hai chấm. Vì vậy, sự nhầm lẫn của tôi nằm ở cách thức phương thức gửi bên dưới là nội suy biến thuộc tính đang được lặp lại.Phương thức gửi của Ruby với nội suy biến khối
module FormatAttributes
def formats(*attributes)
@format_attribute = attributes
end
def format_attributes
@format_attributes
end
end
module Formatter
def display
self.class.format_attributes.each do |attribute|
puts "[#{attribute.to_s.upcase}] #{send(attribute)}"
end
end
end
class Resume
extend FormatAttributes
include Formatter
attr_accessor :name, :phone_number, :email, :experience
formats :name, :phone_number, :email, :experience
end
'send' cũng có thể lấy chuỗi, không chỉ các biểu tượng. "phương thức được thêm vào với dấu hai chấm" - đó là biểu tượng, khái niệm ruby rất cơ bản. Vậy câu hỏi của bạn chính xác là gì? –
Làm thế nào # {send (attribute)} được nội suy vào giá trị thuộc tính riêng lẻ? – KMcA
'thuộc tính' là tên thuộc tính,' send (attribute) 'nhận giá trị theo tên,' # {send (attribute)} 'chèn nó vào một chuỗi. Nó không khác gì, ví dụ '# {foo}' hoặc '# {10 * 20}'. –