2011-11-07 47 views
33

Tôi có hai phương thức được định nghĩa trong tệp ruby ​​của mình.Chuỗi chuyển đổi Ruby thành tên phương thức

def is_mandatory(string) 
     puts xyz 
end 
def is_alphabets(string) 
     puts abc 
end 

Mảng chứa tên của các phương pháp.

methods = ["is_mandatory", "is_alphabets"] 

Khi tôi thực hiện như sau

methods.each do |method| puts method.concat("(\"abc\")") end 

Nó chỉ hiển thị, is_mandatory is_alphabets ("abc") ("abc") chứ không phải là thực sự kêu gọi phương pháp này.

Làm cách nào để chuyển đổi chuỗi thành tên phương thức? Bất kỳ trợ giúp nào được đánh giá cao.

Chúc mừng !!

+3

Một lưu ý phụ, cách Ruby làm phương pháp is_ * là sử dụng dấu hỏi thay vì tiền tố "là", tức là 'bắt buộc?' Và 'bảng chữ cái? '. –

Trả lời

50

Cách tốt nhất có lẽ là:

methods.each { |meth| send(meth, 'abc') } 

Xem Object#send

+0

Cảm ơn bạn đã làm việc! – verdure

+0

Nếu các phương pháp này thuộc về một số lớp học? –

+2

Sau đó, bạn muốn một cái gì đó như: 'obj = OwningClass.new; methods.each {| meth | obj.send (meth, 'abc')} ' – Chowlett

12

Hãy thử sử dụng "gửi".

methods.each do |method| 
    self.send(method, "abc") 
end 
Các vấn đề liên quan