gpt4 book ai didi

ruby - Rails 和类变量

转载 作者:数据小太阳 更新时间:2023-10-29 07:08:54 24 4
gpt4 key购买 nike

class MainController < ApplicationController

@my_var = 123
def index
var1 = @my_var
end

def index2
var2 = @my_var
end
end

为什么 var1var2 都不等于 123

最佳答案

带有@ 的变量是ruby 中的实例变量。如果您要查找类变量,它们的前缀为 @@,因此您应该改用 @@my_var = 123

你不能那样使用实例变量的原因是,如果你在方法之外定义实例变量,它们就不会与你的方法存在于同一范围内,而只会在你的类被解释时存在。

var1 在你的例子中是一个局部变量,它只会在 index 方法中可见。

例子:

class Foo
@@class_variable = "I'm a class variable"

def initialize
@instance_variable = "I'm an instance variable in a Foo class"
local_variable = "I won't be visible outside this method"
end

def instance_method_returning_an_instance_variable
@instance_variable
end

def instance_method_returning_a_class_variable
@@class_variable
end

def self.class_method_returning_an_instance_variable
@instance_variable
end

def self.class_method_returning_a_class_variable
@@class_variable
end
end

Foo.new
=> #<Foo:0x007fc365f1d8c8 @instance_variable="I'm an instance variable in a Foo class">
Foo.new.instance_method_returning_an_instance_variable
=> "I'm an instance variable in a Foo class"
Foo.new.instance_method_returning_a_class_variable
=> "I'm a class variable"
Foo.class_method_returning_an_instance_variable
=> nil
Foo.class_method_returning_a_class_variable
=> "I'm a class variable"

关于ruby - Rails 和类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11523547/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com