2010-10-25 20 views
5

शायद यह हास्यास्पद लगता है लेकिन मुझे आश्चर्य है कि रूबी के साथ यह संभव है? मूल रूप से मैं एक समारोह है ...किसी फ़ंक्शन में ऑपरेटर पास करना?

def add a,b 
c = a + b 
return c 
end 

मैं "+" या एक और ऑपरेटर जैसे पारित करने में सक्षम होना चाहते हैं "-" कार्य करने के लिए इतना है कि यह कुछ की तरह होगा ...

def sum a,b,operator 
c = a operator b 
return c 
end 

क्या यह संभव है?

उत्तर

10

दो संभावनाएं:

def sum a,b,operator 
a.send(operator, b) 
end 
sum 42, 23, :+ 

या अधिक सामान्य समाधान: एक प्रतीक के रूप

लें विधि/ऑपरेटर नाम एक ब्लॉक ले लो :

def sum a,b 
    yield a,b 
end 
sum 42, 23, &:+ 
+0

+1 प्रतीक # to_proc के अच्छे उपयोग के लिए +1 – Swanand

संबंधित मुद्दे