Я сталкивался со следующим, читая о том, как легко переопределить методы в Ruby:
class Array
alias :old_length :length
def length
old_length / 2
end
end
puts [1, 2, 3].length
Конечно, это плохая идея, но она имеет смысл. Но меня беспокоило, что мы так легко переключаемся между :length
и length
и :old_length
и old_length
. Поэтому я попробовал это так:
class Array
alias old_length length
def length
old_length / 2
end
end
puts [1, 2, 3].length
Работает просто отлично - видимо, как и в первой версии. Я чувствую, что есть что-то очевидное, что мне не хватает, но я не уверен, что это такое.
Итак, в сущности, почему :name
и name
взаимозаменяемы в этих случаях?