2012-10-06 45 views
23

In Ruby, was ist der Unterschied zwischen diesen beiden (in Code):Unterschied zwischen. und #

  • Class.method
  • Class#method
+0

Im Code ist der erste ein Methodenaufruf, während der zweite ein Kommentar ist. –

Antwort

24

Das Hash-Format (Methode Klasse #) ist nicht Ruby gültig, wird aber in der Dokumentation zur Beschreibung einer Instanzmethode verwendet.

Klassenmethoden werden normalerweise mit einem Doppelpunkt (Class :: Methode) dokumentiert.

Sie Beispiele für beide in der Ruby-Dokumentation sehen (zB http://www.ruby-doc.org/core-1.9.3/String.html)

Der Punktformat in Code verwendet wird, wenn tatsächlich eine Klassenmethode (class.method) nennen, obwohl ich einige Leute gesehen haben ((leider) benutze es synonym mit Doppelpunkt Doppelpunkt oder Hash in der Dokumentation.

22

Es ist eine Namenskonvention.

  • Verwendung Pfund #method zum Beispiel Methoden
  • Verwendung dot .method für Klassenmethoden

See: How to name RSpec describe blocks for methods

+0

basierend auf diesem super knappen Blogpost allein? Sollte das Dokumentationsformat nicht befolgt werden, d. H. "Class :: method" für eine Klassenmethode? – Todd

+0

Ich bin mit CDN auf diesem. Die Ruby-Dokumente sind eine kanonische Quelle, der Blog-Beitrag ist nicht autorisierend und '.method' ist verwirrend, da alle Methoden auf diese Weise aufgerufen werden. Außerdem ist der Zugriff auf Klassenkonstanten über '::' so sinnvoll. –

2

Class#method ist nicht gültige Code. Es wird nur in der Dokumentation verwendet. Methode sollte eine Instanzmethode sein.

Class.method oder object.method ist die eigentliche Methode, die zum Objekt gehört. Die Klasse ist auch ein Objekt. Es ist ein gültiger Code.