Today I learned (learnt?) about the alias
keyword in Ruby. I'm not sure how I've gone this long working with ruby without hearing about it but better late than never.
If this is also your first time hearing about alias
, let me give you a short intro.
Ruby is a very expressive language. It lets you write code that looks like plain english. Keeping with that trend it's not uncommon for me to do something like this in a class:
class Todo
attr_accessor :name, :complete
def initialize(name)
@name = name
@complete = false
end
def done?
complete
end
def mark_complete=(arg)
complete=(arg)
end
end
Ok, I wouldn't actually do that but I'm just illustrating a point.
This works just fine and lets us keep writing our plain english-like syntax
my_todo = Todo.new('Learn about the alias keyword')
my_todo.done? # => false
my_todo.mark_complete = true
my_todo.done? # => true
But, just like most things in Ruby, there is a shorter and better(?) way to do this.
Enter the alias
keyword:
class Todo
attr_accessor :name, :complete
def initialize(name)
@name = name
@complete = false
end
alias done? complete
alias mark_complete= complete=
end
So much shorter and cleaner. I also think it's just as expressive as (if not more than) the original example. And it still works as expected:
my_todo = Todo.new('Learn about the alias keyword')
my_todo.done? # => false
my_todo.mark_complete = true
my_todo.done? # => true
I found the alias
keyword to be pretty great and definitely something I'm going to start using in the future.
How about you? What do you think about the alias
keyword in Ruby?
Top comments (3)
love it. little gold nuggets like this in ruby make the language so fun to work with. thanks for sharing.
Agreed. The more I work with and learn about Ruby the more I love it.
Check out
alias_method
, a similar yet slightly different method for the "same thing". Just to add some confusion here 😁