के रूप में सरणी के मूल्यों को गुजरने के लिए कॉल विधि वर्तमान में मैं इस समस्या पर फंस गया हूं। मैंने अपने द्वारा बनाई गई कक्षा में method_missing फ़ंक्शन में शामिल किया है। जब कोई फ़ंक्शन कहा जाता है जो अस्तित्व में नहीं है, तो मैं दूसरे फ़ंक्शन को सभी पैरामीटर के रूप में तर्क सरणी को पास करने के लिए एक और फ़ंक्शन कॉल करना चाहता हूं। क्या किसी को ऐसा करने का कोई तरीका पता है? उदाहरण के लिए, मैं इस तरह कुछ करने के लिए करना चाहते हैं:रूबी - प्रत्येक पैरामीटर
class Blah
def valid_method(p1, p2, p3, opt=false)
puts "p1: #{p1}, p2: #{p2}, p3: #{p3}, opt: #{opt.inspect}"
end
def method_missing(methodname, *args)
if methodname.to_s =~ /_with_opt$/
real_method = methodname.to_s.gsub(/_with_opt$/, '')
send(real_method, args) # <-- this is the problem
end
end
end
b = Blah.new
b.valid_method(1,2,3) # output: p1: 1, p2: 2, p3: 3, opt: false
b.valid_method_with_opt(2,3,4) # output: p1: 2, p2: 3, p3: 4, opt: true
(ओह, और btw, ऊपर के उदाहरण मेरे लिए काम नहीं करता है)
संपादित
यह वह जगह है कोड है कि, काम करता है प्रदान की उत्तर के आधार पर (वहाँ कोड में कोई गलती है ऊपर):
class Blah
def valid_method(p1, p2, p3, opt=false)
puts "p1: #{p1}, p2: #{p2}, p3: #{p3}, opt: #{opt.inspect}"
end
def method_missing(methodname, *args)
if methodname.to_s =~ /_with_opt$/
real_method = methodname.to_s.gsub(/_with_opt$/, '')
args << true
send(real_method, *args) # <-- this is the problem
end
end
end
b = Blah.new
b.valid_method(1,2,3) # output: p1: 1, p2: 2, p3: 3, opt: false
b.valid_method_with_opt(2,3,4) # output: p1: 2, p2: 3, p3: 4, opt: true