Ruby-Terminologie Frage: Ist dies eine Ruby-Deklaration, Definition und Zuordnung, die alle zur gleichen Zeit?
-
21-08-2019 - |
Frage
Wenn ich sage:
x = "abc"
Dies scheint eine Erklärung, Definition und Zuordnung, die alle zur gleichen Zeit, und zwar unabhängig davon, ob ich etwas über x im Programm gesagt habe, vor.
Ist das richtig?
Ich bin nicht sicher, was die richtige Terminologie für Erklärungen, Definitionen in Ruby und assigments oder wenn es sogar eine Unterscheidung zwischen diesen Dingen wegen der dynamischen Typisierung in Ruby.
@tg: In Bezug auf Ihren Punkt 2: selbst wenn x vor der existierte x = "abc" Aussage, könnten Sie die x nicht nennen = "abc" Anweisung, um eine Definition / Neudefinition
Lösung
-
Erklärung:. Nein
Es macht keinen Sinn, über erklärt Variablen in Ruby zu sprechen, denn es gibt nichts, analog zu einer Erklärung in den Sprachen. Sprachen für Compiler entwickelt haben Erklärungen, da der Compiler im Voraus wissen muss, wie groß Datentypen sind und wie die verschiedenen Teile davon zuzugreifen. z , wenn ich sage, in C:.int *i;
dann der Compiler weiß, dass irgendwo etwas Speicher zur Seite für i gesetzt ist, und es ist so groß, wie es einen Zeiger auf einen int zu halten sein muss. Schließlich wird der Linker alle Verweise Haken zusammen
i
, aber zumindest der Compiler weiß, dass es irgendwo da draußen. -
Definition:. Wahrscheinlich
Eine Definition die Regel setzt einen Anfangswert für etwas (zumindest in den bekannten kompilierten Sprachen). Wennx
nicht vor demx = "abc"
Aussage noch nicht gab, dann denke ich dir eine Definition nennen könnte, denn das ist, wenn Ruby-Wert auf das Symbolx
zuweisen hat.Auch wenn, Definition ist ein spezifischer Begriff, die Menschen in der Regel die anfängliche statische Zuweisung eines Wertes zu einem gewissen Variable aus, dass variable Erklärung verwenden zu unterscheiden. In Ruby, haben Sie nicht diese Art von Aussage. Sie sagen, typischerweise nur eine Variable definiert , wenn sie einen Wert irgendwo in Ihrem aktuellen Bereich zugeordnet worden ist, und Sie sagen, es ist undefined , wenn es nicht hat.
Sie sprechen in der Regel nicht über sie eine Definition mit, weil in Ruby, daß die Mengen nur zu Zuordnung . Es gibt keinen besonderen Zusammenhang, dass Sie rechtfertigen würde sagen, Definition wie es in anderen Sprachen ist.
Das bringt uns zu ...
-
Zuordnung. Ja
Sie können dies auf jeden Fall rufen Sie eine Zuordnung , da es sich um einen Wert zu dem Symbolx
zuweist. Ich glaube nicht, dass jemand mit, dass nicht einverstanden ist.
Andere Tipps
So ziemlich. Und wenn auf der nächsten Zeile, die Sie tun:
x = 1
Dann haben Sie nur re-definiert es, sowie zugeordnet es (sein jetzt eine ganze Zahl, kein String). Duck Typing ist sehr unterschiedlich zu dem, was Sie wahrscheinlich früher.