下面是alias_method的典型用法,爲什麼alias_method是一種實例方法?
class A
def say
puts 'say'
end
alias_method :talk, :say
end
alias_method是在模塊類中定義的私人實例方法,但在上面的代碼中,它更像一個類方法代替一個實例方法的,爲什麼上面的代碼工作?
下面是alias_method的典型用法,爲什麼alias_method是一種實例方法?
class A
def say
puts 'say'
end
alias_method :talk, :say
end
alias_method是在模塊類中定義的私人實例方法,但在上面的代碼中,它更像一個類方法代替一個實例方法的,爲什麼上面的代碼工作?
正如您正確注意到的那樣,它是一種類別方法A
,同時也是Module
類的一個實例方法,其中Class
類是子類。類方法不是唯一的實例方法。所有類方法都是Class
類的實例方法,除非它們是單例類中的方法。
在上例中,alias_method
定義在Module
類中。因此,作爲Module
的實例的A
可以是對alias_method
的方法調用的接收者。但由於這種方法是私人的,接收器需要隱含。
你已經使用了兩個月的計算器,問了三個問題,並沒有接受任何答案。如果您對迄今爲止的答案都沒有滿意,那沒問題,但如果答案中的任何一個都是正確的,請接受它們。 – sawa