Il existe différents types de variables et je ne savais pas comment les utiliser correctement, alors je laisse une note pour moi-même.
local.rb
def local()
a = 3
end
p a
# =>Traceback (most recent call last):
local.rb:5:in `<main>': undefined local variable or method `a' for main:Object (NameError)
Un défini par la méthode locale ne peut pas être appelé depuis l'extérieur de la méthode.
instance.rb
class Instance
def set_val(val)
@val = val
end
def put_val
p @val
end
end
test1 = Instance.new
test1.set_val("aaa")
test1.put_val
test2 = Instance.new
test2.put_val
# =>
"aaa"
nil
Insérez "aaa" dans @val de l'instance test1 en utilisant la méthode set_val. Après cela, dans l'instance test2, put_val est appelé, mais nil est renvoyé. À partir de là, on peut voir que la valeur est conservée pour chaque instance.
instance.rb
class Instance
def set_val(val)
@val = val
end
def put_val
p @val
end
end
test1 = Instance.new
test1.set_val("aaa")
test1.put_val
test2 = Instance.new
test2.set_val("bbb")
test2.put_val
# =>
"aaa"
"bbb"
Il est également nécessaire d'utiliser la méthode set_val pour l'instance test2.
class.rb
class Instance
def set_val(val)
@@val = val
end
def put_val
p @@val
end
end
test1 = Instance.new
test1.set_val("aaa")
test1.put_val
test2 = Instance.new
test2.put_val
# =>
"aaa"
"aaa"
Contrairement à la variable d'instance précédente, la valeur est partagée par toutes les instances de la même classe.
class.rb
class Instance
def set_val(val)
@@val = val
end
def put_val
p @@val
end
end
test1 = Instance.new
test1.set_val("aaa")
test1.put_val
test2 = Instance.new
test2.set_val("bbb")
test2.put_val
test1.put_val
# =>
"aaa"
"bbb"
"bbb"
global.rb
class Global
def set_val(val)
$val = val
end
end
test1 = Global.new
test1.set_val("aaa")
p $val
# =>
"aaa"
Recommended Posts