Über Variablen und Umfang (Ruby)

Ich hoffe, dass Sie einige nützliche Informationen über häufig verwendete Variablen und ihre verwendbaren Bereiche finden. Da ich ungefähr zweieinhalb Monate studiert habe, kann es auch zu Fehlern kommen. Klicken Sie hier für den Inhalt des Artikels

Übrigens, hier ist die Version von Ruby, die Sie lernen


ruby 2.6.5

Was ist eine Variable?

Stellen Sie sich eine Variable als "Feld zum Speichern beliebiger Werte" vor. Zum Beispiel ist es ein Bild, in dem die Buchstaben "Apfel" in das Feld (Variable) mit der Bezeichnung "Apfel" eingefügt werden. Dies wird ausgedrückt als "** Zuweisen des Zeichens" Apfel "zur Variablen Apfel". Verwenden Sie beim Ersetzen auch "=". Seien Sie vorsichtig, da sich die Bedeutung von der Arithmetik "=" unterscheidet.

apple = "Apfel"

Indem Sie auf diese Weise eine Variable erstellen (definieren), können Sie den Wert des Inhalts verwenden, indem Sie diese Variable aufrufen.

puts apple
=>Apfel

Warum gibt es Variablen?

Der Grund dafür ist, dass das wiederholte Schreiben desselben Codes eine sehr zeitaufwändige Aufgabe ist. Wenn Sie also die Variablen im Voraus definieren, können Sie Zeit sparen und die Werte korrigieren, selbst wenn Korrekturen vorgenommen werden. Wird sein. Wenn Sie beispielsweise ein Programm schreiben, das die Fläche eines Kreises berechnet, kann die Fläche des Kreises anhand des Verhältnisses "Radius x Radius x Umfang" berechnet werden. Wenn das Umfangsverhältnis 3,14 beträgt,

#Formel für die Fläche eines Kreises mit einem Radius von 3
3 * 3 * 3.14 

#Formel für die Fläche eines Kreises mit einem Radius von 5
5 * 5 * 3.14

Sie kann nach dieser Formel berechnet werden. Wenn zum Zeitpunkt, zu dem das Programm zu einem gewissen Grad geschrieben wird, "Ich möchte, dass Sie das Umfangsverhältnis auf 3 korrigieren", müssen Sie jedoch alle Umfangsverhältnisse in der obigen Beschreibung korrigieren. Definieren wir also eine Variable für das Umfangsverhältnis.

#Definieren Sie das Umfangsverhältnis mit der Variablen pi
pi = 3.14

#Formel für die Fläche eines Kreises mit einem Radius von 3
3 * 3 * pi

#Formel für die Fläche eines Kreises mit einem Radius von 5
5 * 5 * pi

Wenn das Umfangsverhältnis korrigiert wird und der Wert der Variablen korrigiert wird, werden auf diese Weise auch andere Ausdrücke korrigiert. Lassen Sie uns für Werte, die wiederholt verwendet werden, etwas wie "einer Variablen zuweisen" ausführen.

Variablentyp

Es gibt 5 Arten von Ruby-Variablen mit jeweils unterschiedlichen Verwendungsbereichen. Variablentypen werden durch den ersten Buchstaben in eine der folgenden Kategorien eingeteilt.

Variablentyp Beschreibung Nutzbereich (Umfang)
Globale Variablen $〇〇 Kann von überall im Skript referenziert und aktualisiert werden
Klassenvariable @@〇〇 Kann überall in der Klasse referenziert werden
Instanzvariable @〇〇 Kann überall in der Instanz referenziert werden
Lokale Variablen 〇〇 Kann nur innerhalb der definierten Methode referenziert werden
Pseudovariable Selbst, Null usw.

Diese Variablen haben das Konzept des Gültigkeitsbereichs, das den Bereich definiert, in dem sie verwendet werden können. (Mit Ausnahme von Pseudovariablen) Wenn Sie diesen nutzbaren Bereich nicht kennen, treten häufig Fehler auf. Seien Sie also vorsichtig.

Nutzbereich (Umfang)

Globale Variablen

Globale Variablen, die am Anfang mit einem $ definiert sind, können unabhängig vom Gültigkeitsbereich verwendet werden. Der breiteste Anwendungsbereich. (Seien Sie also vorsichtig, wenn Sie es verwenden)


$hoge = "hoge"

def huga
  puts $hoge => "hoge"
end
  huga #=> "hoge"

Klassenvariable

Es ist eine Variable, die von der gesamten Klasse gemeinsam genutzt wird, und wird als Klassenvariable definiert, wenn der Variablenname mit @@ beginnt, z. B. @@ 〇〇.

class User
    @@name = "tanaka"

    def name
      puts @@name
    end
end

user_first = User.new
user_first.name #=> "tanaka"

Auf den ersten Blick ist es praktisch, aber aufgrund des großen Bereichs kann es unbeabsichtigt überschrieben werden und der Wert kann sich ändern.


class User
    def initialize(name)
        @@name = name
    end

    def name
      puts @@name
    end
end

user_first = User.new("suzuki")
user_second = User.new("sato")
user_first.name #=> "sato"
user_secont.name #=> "sato"

Instanzvariable

Instanzvariablen sind Variablen, die für jede aus der Klasse erstellte Instanz einen Wert haben. Der Bereich liegt innerhalb der Instanz. Schreiben wir es auf die gleiche Weise wie im obigen Beispiel für Klassenvariablen.


class User
    def initialize(name)
        @name = name
    end

    def name
      puts @name
    end
end

user_first = User.new("suzuki")
user_second = User.new("sato")
user_first.name #=> "suzuki"
user_second.name #=> "sato"

Im Gegensatz zu zuvor wird der Wert nicht überschrieben. Instanzvariablen werden sehr häufig beim Erstellen von Apps mit Ruby on Rails verwendet. Stellen Sie daher sicher, dass Sie sie verstehen. Informationen zum Prozessablauf der Instanz finden Sie in diesem Artikel, da er leicht zu verstehen ist.

[Ruby] Ich habe wieder etwas über Klassen und Instanzen gelernt

Lokale Variablen

Lokale Variablen sind die Variablen mit dem engsten Gültigkeitsbereich und können nur innerhalb definierter Methoden verwendet werden. Lassen Sie uns wie im vorherigen Beispiel die Instanzvariable in eine lokale Variable ändern.


class User
    def initialize(name)
        local_name = name
    end

    def name
      puts local_name
    end
end

user1 = User.new("suzuki")
user2 = User.new("sato")
user1.name 
user2.name 
 #Der folgende Fehler tritt auf
=> undefined local variable or method `local_name' for #<User:0x00007fd91d104f48> (NameError)

Wenn Sie es als lokale Variable ausführen, tritt der obige Fehler auf. Dies liegt daran, dass ich versucht habe, eine Variable von außerhalb des Gültigkeitsbereichs aufzurufen, sodass die Fehlermeldung "Es gibt keine solche Methode" angezeigt wird. Wie Sie sehen können, hat jede Variable einen Gültigkeitsbereich. Seien Sie also vorsichtig, wenn Sie sie verwenden.

Pseudovariable

Es ist eine spezielle Variable, die sich von einer normalen Variablen unterscheidet.

** self ** Das Objekt der aktuellen Methode ** nil ** Die einzige Instanz der NilClass? -Klasse ** true ** Die einzige Instanz der TrueClass? -Klasse. Echter repräsentativer Wert ** false ** FalseClass? Die einzige Instanz der Klasse. Stellt false dar ** \ __FILE __ ** Repräsentiert den aktuellen Namen der Quelldatei ** \ LINE ** Repräsentiert die Zeilennummer in der aktuellen Quelldatei

Wenn Sie versuchen, dieselben Variablen wie diese Variablennamen zu definieren, wird der folgende Fehler angezeigt:

SyntaxError ((irb):1: Can't change the value of self)
self = hoge
^~~~

Da der Wert von self nicht geändert werden kann, ist es ein Fehler, dass "der Wert self nicht geändert werden kann". Ich verstehe, dass es sich um eine Variable handelt, die ursprünglich definiert wurde und nicht geändert werden kann. (Ich lerne hier)

Schließlich

Variablentypen und -bereiche usw. Wenn Sie die Grundlagen nicht verstehen, treten beim Erstellen von Apps häufig Fehler auf. Die Grundlagen sind wirklich wichtig. Ich werde weiter hart lernen und mein Verständnis vertiefen.

Die Seite, die ich als Referenz verwendet habe

[Ruby] Ich habe wieder etwas über Klassen und Instanzen gelernt [Ruby 2.7.0 Referenzhandbuch] (https://docs.ruby-lang.org/ja/latest/doc/spec=2fvariables.html#instance) [Reverse Ruby] (https://sites.google.com/site/gyakuhikiruby/home/bian-shutosukopu) Kennen Sie die Arten von Variablen! Verwendung des variablen Bereichs in Ruby

Recommended Posts

Über Variablen und Umfang (Ruby)
Bereich, in dem Variablen mit Ruby verwendet werden können [Scope]
Verwenden Sie Ruby-Variablen in Javascript.
Umfang
[Ruby] Behandeln Sie Instanzvariablen mit Instanzmethoden
[Grundkenntnisse in Java] Umfang der Variablen
[Ruby] Zeigt den Inhalt von Variablen an
Rubin lernen 4
Rubin lernen 5
Ruby-Grundlagen
Ruby Review 2
Rubinzusatz
Punkt 57 Minimieren Sie den Umfang lokaler Variablen
Ruby lernen 3
Ruby-Einstellung 2
Rubinproblem ⑦
Ruby lernen 2
Rubin lernen 6
Ruby-Einstellungen 1
Über den Umfang
Rubin lernen 1
form_with scope
Ruby Review 1
[Ruby] Grundkenntnisse über Klasseninstanzvariablen usw.
Vergleich zwischen Java und Swift (1) Quellcodeverwaltung / Umfang / Variablen