2012-06-27 8 views
5

Mögliche Duplizieren:
Ruby syntax question: Rational(a, b) and Rational.new!(a, b)Warum ist die neue Methode nicht für die Erstellung von Rational in Ruby benötigt

Ich bin in den Prozess der Rubin pickaxe Buch zu lesen, und ich bin verwirrt über die Syntax der Erstellung von rationalen Zahlen.

Rational(3,4) * Rational(1,2) 

produziert

=> 3/8 

Warum ist die new Verfahren nicht erforderlich für Rational (ich zum Beispiel auch bemerkte ich eine Zeichenfolge ohne die neue Methode erstellen können)?

+1

Weil es eine Methode ist. –

+1

Ah ja, ich habe dieses Duplikat nicht gesehen. Du hast Recht. –

Antwort

6

Zum einen hat Ruby kein new Schlüsselwort. new ist eine Klassenmethode, die alle Klassen haben (sie erben von Class), die ein Objekt dieser Klasse erstellt. Wenn Sie etwas wie Rational(3,4) sehen, ist Rational wirklich nur eine private Methode von Object (definiert in Kernel), die das Erstellen rationaler Zahlen vereinfacht. Weitere Informationen zu diesen Konstruktormethoden finden Sie in meiner Antwort: https://stackoverflow.com/a/9677125/1008938

+0

Danke ja, Entschuldigung, ich meinte die neue Methode. –

+0

@JeffStorey: Oh. Aber der Rest der Antwort gilt immer noch. Und sieh dir den Link an. – Linuxios

+0

Ja, ich sehe jetzt, danke. –

3

Es ist eine Methode, die zufällig den gleichen Namen wie die Klasse hat. Es ist eine gemeinsame conversion idiom in Ruby.

+1

Danke. Gut, wenn ich diese geläufigen Rubin-Idiome aufnehme, anstatt nur die Syntax zu lernen. –