One of my favorite things about Ruby is how it handles operator overloading. For example, to overload (+) on a class, you can just define a specially-named method:
class John
def +(other)
puts "so you want to add #{other} to me, eh?"
end
end
And accessing it looks something like:
John.new + 1
Another case of these that I think is fun, but that we don’t think of as a method too often, is the backtick operator. You can redefine backtick just like anything else:
def `(str) puts str end
which will print anything contained in backticks instead of executing it:
`hello world!`
BONUS FACT: Did you know the proper name for backtick is the grave accent?