370 Stimmen

Sollte ich alias oder alias_method verwenden?

Ich habe einen Blogbeitrag auf alias vs. alias_method . Wie in dem Beispiel in diesem Blogbeitrag gezeigt, möchte ich einfach eine Methode auf eine andere innerhalb derselben Klasse verweisen. Welches sollte ich verwenden? Ich sehe immer alias benutzt, aber jemand hat mir gesagt alias_method ist besser.

Verwendung des Alias

class User

  def full_name
    puts "Johnnie Walker"
  end

  alias name full_name
end

User.new.name #=>Johnnie Walker

Verwendung von alias_method

class User

  def full_name
    puts "Johnnie Walker"
  end

  alias_method :name, :full_name
end

User.new.name #=>Johnnie Walker

Link zum Blogbeitrag hier

20voto

Doktor OSwaldo Punkte 5368

Die Mitwirkenden von rubocop gem schlagen in ihrem Ruby Style Guide :

Alias bevorzugen, wenn Methoden in lexikalischen Klammern aliasiert werden Auflösung von self in diesem Kontext ebenfalls lexikalisch ist, und es kommuniziert dem Benutzer klar, dass die Umleitung Ihres Alias zur Laufzeit oder von einer Unterklasse nicht geändert wird, es sei denn, es wird explizit gemacht wird.

class Westerner
  def first_name
   @names.first
  end

 alias given_name first_name
end

Verwenden Sie immer alias_method, wenn Sie Methoden von alias_method Singleton-Klassen zur Laufzeit, da der lexikalische Umfang von alias zu Unvorhersehbarkeit in diesen Fällen führt

module Mononymous
  def self.included(other)
    other.class_eval { alias_method :full_name, :given_name }
  end
end

class Sting < Westerner
  include Mononymous
end

-1voto

Ajay Punkte 1

alias_method neue_Methode , alte_Methode

alte_Methode wird in einer Klasse oder einem Modul deklariert, das nun an unsere Klasse vererbt wird, in der neue_Methode verwendet werden.

diese können sowohl variabel als auch Methode sein.

Angenommen, Klasse_1 hat old_method, und Klasse_2 und Klasse_3 erben beide von Klasse_1.

Wenn die Initialisierung von Class_2 und Class_3 in Class_1 durchgeführt wird, können beide unterschiedliche Namen in Class_2 und Class_3 und deren Verwendung haben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X