Is there something like this in ruby?
send(+, 1, 2)
I want to make this piece of code seem less redundant
if op == \"+\"
Yup, simply use send (or, better yet, public_send) like so:
arg1.public_send(op, arg2)
This works because most operators in Ruby (including +, -, *, /, and more) simply call methods. So 1 + 2 is the same as 1.+(2).
You may also want to whitelist op if 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).