In some open source ruby projects you may see similar alias
and alias_method
methods. what are the specific use of these two methods? how are these two methods different? let's look at the following code:
#alias
class User
def full_name
puts "Mixbo"
end
alias name full_name
end
User.new.name #=>Mixbo
#alias_method
class User
def full_name
puts "Mixbo"
end
alias_method :name, :full_name
end
User.new.name #=> Mixbo
The above examples all output the "Mixbo" string before renaming the full_name
in the User
class. from this example alone we can't see the difference between the two methods continue:
#alias_method
class User
def full_name
puts "Super Mixbo"
end
def self.rename
alias_method :name, :full_name #==> Note that alias_method is used here
end
end
class Mixbo < User
def full_name
puts "Mixbooooo"
end
rename
end
Mixbo.new.full_name #=> "Mixbooooo"
#alias
class User
def full_name
puts "Super Mixbo"
end
def self.rename
alias :name :full_name #==> Note that alias is used here
end
end
class Mixbo < User
def full_name
puts "Mixbooooo"
end
rename
end
Mixbo.new.name #=> 'Super Mixbo'
From the above example we can see that when there is an inheritance relationship between classes. alias
will not affect its subclasses. related alias_method
will find the closest method of the same name in its subclass to operate (for example, full_name
above)
So alias
and alias_method
Can give an alias to a method
alias
is generally valid when the source code is interpreted by the compileralias_method
is generally valid when the code is running
Generally I use alias_method
a little more.
Hope it can help you :)
Top comments (0)