2014-01-19 12 views

Antwort

2

Module#attr_accessor

attr_accessor (Symbol, ...) → nil

attr_accessor (string, ...) → nil (neu in Ruby eingeführt 2,1)

Definiert ein benanntes Attribut für dieses Modul, wobei der Name symbol.id2name lautet und eine Instanzvariable (@name) sowie eine entsprechende Zugriffsmethode zum Lesen erstellt wird. Erstellt außerdem eine Methode namens name =, um das Attribut festzulegen. Stringargumente werden in Symbole konvertiert.


Ist dies eine Voraussetzung attr_accessor der Verwendung?

Nein, Sie dürfen sowohl mit Symbolen als auch mit Strings arbeiten.

des Lese - Understanding Ruby symbol as method call

+0

Diese Definition erlaubt Strings ist ziemlich neu ... – PinnyM

+0

@PinnyM Ja .. Ich weiß .. Deshalb habe ich verlinkt .. –

2

Während die aktuelle Version von Rubin (2.1) permits passing a string (wie von @ArupRakshit erwähnt), älteren Versionen von Rubin did not (2.0 und früher). Daher muss jeder Code, der nicht auf Ruby 2.1 angewiesen ist (und das wäre fast alles), Symbole übergeben.

Abgesehen davon, in den meisten Fällen möchten Sie sowieso Symbole weitergeben, da sie atomar sind, weniger Aufwand haben und semantisch mehr im Einklang mit der Definition von Attributen als Strings sind.