2011-01-06 9 views
0

Ich habe eine grundlegende Frage, die ich noch nicht von Ruby verstehen kann. Wenn in der aktiven Aufzeichnung, ich habe "@food", wie unterscheidet es sich mit "Essen". I RECOGN es ein Array ist, aber aren "den aktiven Datensatz T kann davon ausgegangen, als eine Liste von Daten (array?) Seinegrundlegende Frage Unterschied zwischen @ in aktiven Datensatz

Danke für die gemeinsame Nutzung

+1

Ich empfehle Ihnen, ein wenig über Ruby selbst zu lesen, bevor Sie in Rails tauchen. Sie scheinen verwirrt darüber zu sein, wo die grundlegenden Konzepte gehören. – edgerunner

Antwort

5

, die nichts mit Active zu tun hat. Es ist einfach nur Ruby-Syntax.

@foo bezeichnet eine Instanzvariable. auf dem instanc scoped ist e seiner Klasse und unterscheidet sich für jede Instanz der Klasse. Der Inhalt wird beibehalten, solange die Klasseninstanz beibehalten wird.

foo kann eine lokale Variable bezeichnen, die nur im aktuellen Blockbereich gültig ist. Sobald der Block beendet wird, wird der Inhalt gelöscht, und der Inhalt wird verworfen, sofern nicht anderswo verwiesen wird.

Und die @ Notation hat nichts mit Arrays oder anderen Datentypen zu tun. In Ruby haben Variablen keine Datentypen. @bar akzeptiert ohne weiteres eine Zeichenkette, eine Ganzzahl oder ein Array. Und so wird bar.

Verwandte Themen