Is there something like this in ruby?
send(+, 1, 2)
I want to make this piece of code seem less redundant
if op == "+"
return arg1 + arg2
elsif op == "-"
return arg1 - arg2
elsif op == "*"
return arg1 * arg2
elsif op == "/"
return arg1 / arg2
Yup, simply use
send(or, better yet,public_send) like so:This works because most operators in Ruby (including
+,-,*,/, and more) simply call methods. So1 + 2is the same as1.+(2).You may also want to whitelist
opif it’s user input, e.g.%w[+ - * /].include?(op), as otherwise the user will be able to call arbitrary methods (which is a potential security vulnerability).