jestem wklejając kilka przykładów metod alias
class Test
def simple_method
puts "I am inside 'simple_method' method"
end
def parameter_instance_method(param1)
puts param1
end
def self.class_simple_method
puts "I am inside 'class_simple_method'"
end
def self.parameter_class_method(arg)
puts arg
end
alias_method :simple_method_new, :simple_method
alias_method :parameter_instance_method_new, :parameter_instance_method
singleton_class.send(:alias_method, :class_simple_method_new, :class_simple_method)
singleton_class.send(:alias_method, :parameter_class_method_new, :parameter_class_method)
end
Test.new.simple_method_new
Test.new.parameter_instance_method_new("I am parameter_instance_method")
Test.class_simple_method_new
Test.parameter_class_method_new(" I am parameter_class_method")
WYJŚCIE
I am inside 'simple_method' method
I am parameter_instance_method
I am inside 'class_simple_method'
I am parameter_class_method
Ciekawostka: 'def self.generate; Nowy; end' i 'class_alias: generate,: new' mają tę samą liczbę znaków. –
@AmitKumarGupta To oszustwo, ponieważ 'def self.generate; Nowy; end' dodaje nadmiarowe wywołanie na stosie (nie ma to znaczenia, ale jest tak dokładne, jak to tylko możliwe). – mudasobwa
@AmitKumarGupta Nie działa również, jeśli potrzebujesz 'new' do podjęcia jakichkolwiek argumentów. – Ajedi32