Unterschied zwischen verschiedenen Variablen Bereichen in ruby

Ruby hat 5 variable scopes:

  1. Lokale Variablen: dies sind die normalen Variablen, Beispiel x = 25, y = gaurish wo x und y sind lokale Variablen.
  2. Instanz-Variablen: diese sind gekennzeichnet mit @ symbol vor dem eigentlichen Variablennamen. hauptsächlich mit dem Unterricht, so dass jede Instanz/Objekt der Klasse hat einen anderen/separaten Wert. Beispiel. @employee.name = 'Alex'
  3. Klasse Variablen: gekennzeichnet mit @@ Symbol vor der Variablen name. Klasse variable, denke ich, haben den gleichen Wert accos alle Instanzen/Objekt.
  4. Globale Variablen: Sie beginnen mit $ symbol und zugänglich sind überall. Beispiel $LOAD_PATH
  5. Konstanten: Muss beginnen mit Großbuchstaben, aber per Konvention ist geschrieben in ALL_CAPS. obwohl, es ist eine Konstante, aber seinen Wert, seine nicht konstant und verändert werden kann(ruby wirft eine Warnung, obwohl). so in dem Sinne, das wirkt auch wie eine variable.

Wie Sie sehen können,alle der oben genannten Variablen speichern einen Wert eines Typs und deren Wert kann geändert werden. Aber, für jeden Bereich etwas tut, etwas anders. Mit 5 verschiedenen Arten von Variablen-scopes ist verwirrt die Hölle aus mir heraus. Vor allem, ich habe Schwierigkeiten, zu entscheiden, unter welchen Fall sollte ich einen bestimmten Bereich in meinem code. also ich habe einige Fragen in meinem Kopf. bitte um Antwort:

  1. Ich feststellen, dass lokale Variablen und Klassenvariablen bleiben gleich für alle Objekte/Instanzen, im Gegensatz zu Instanz-Variablen. also was ist der Unterschied zwischen Lokalen Variablen und Klassenvariablen?
  2. Können lokale Variablen verwendet werden, statt der class-Variablen? oder vice-versa. Und wenn ja, dann warum, und wenn Nein, warum nicht?
  3. Globale Variablen in ruby erinnert mich an die böse global $x Variablen in PHP. Sind Globale Variablen in ruby auch als böse und sollte daher nicht verwendet werden. ODER gibt es bestimmte Fälle in denen es Sinn macht die Verwendung von globalen Variablen in ruby?
  4. Warum die Konstanten sind nicht-Konstanten und damit Ihre Wert, der geändert werden? Eine Konstante, die den Wert per definition konstant sein sollte richtig? sonst können wir nur verwenden Sie eine andere variable und nicht deren Wert ändern. wäre das äquivalent zu einer KONSTANTEN in ruby?
  5. Jede Seite/Ressource/link, der erklärt den Unterschied zwischen 5 verschiedene variable Bereiche in ruby? Ich wie immer einen griffbereit.
  6. Unter welchen use-case, ich sollte mit einem bestimmten Geltungsbereich von Variablen in meinem code. so würde man erklären, alle 5 Fälle mit können Beispiel, das wäre cool, das ist mein Hauptgrund für die Verwirrung.
  7. gibt es eine de-facto-Wahl, wie public in java? Das wäre das sichere Wette in die meisten use-cases?

Dank für Ihre Zeit zu Lesen und Frage beantworten

Für Punkt eins, alle Objekte teilen sich Klassen-Niveau-Variablen, jedes einzelne Objekt hat seine eigene Kopie der lokalen Variablen
Wenn jedes einzelne Objekt hat seine eigene Kopie der lokalen Variablen, nicht lokale Variablen, die mehr wie Instanz-Variablen dann?
Naja, ich nehme an, man könnte alles sehen. Instanz-Variablen gehören eine Instanz eines Objekts und der Regel make-up Eigenschaften des Objekts. Zum Beispiel ein Person Objekt vielleicht die beiden Instanz-Variablen @first_name und @last_name könnte es auch eine lokale variable x aber x ist unabhängig von dem Zustand der Person Objekt

InformationsquelleAutor CuriousMind | 2012-07-15

Schreibe einen Kommentar