gpt4 book ai didi

ruby 动态添加类变量

转载 作者:太空宇宙 更新时间:2023-11-03 17:22:48 27 4
gpt4 key购买 nike

例子:

class Base
@@var = "base"

def self.assign_var(var)
@@var = var
end

def self.show_var
@@var
end

def initialize
p @@var
end

end

class A < Base
assign_var("a")
end

class B < Base
assign_var("b")
end

class C < Base
assign_var("c")
end

p A.show_var # "c"
p B.show_var # "c"
p C.show_var # "c"
a = A.new # "c"
b = B.new # "c"
c = C.new # "c"

如何让他们在类(class)中展现自己的值(value)分配?像这样:

p A.show_var # "a"
p B.show_var # "b"
p C.show_var # "c"
a = A.new # "a"
b = B.new # "b"
c = C.new # "c"

更新

我需要在初始化程序中访问这个变量。

class Base
@var = "base"

def self.assign_var(var)
@var = var
end

def self.show_var
@var
end

def initialize
p @var
end
end

class A < Base
assign_var("a")
end

class B < Base
assign_var("b")
end

class C < Base
assign_var("c")
end

p A.show_var # "a"
p B.show_var # "b"
p C.show_var # "c"
a = A.new # nil
b = B.new # nil
c = C.new # nil

如果我使用 Vu 的解决方案,它不起作用...有什么想法吗?

最佳答案

类变量没有在子类中重新定义。在这种情况下,您可以使用类级实例变量:

class Base
@var = "base"

def self.assign_var(var)
@var = var
end

def self.show_var
@var
end
end

class A < Base
assign_var("a")
end

class B < Base
assign_var("b")
end

class C < Base
assign_var("c")
end

p A.show_var # "a"
p B.show_var # "b"
p C.show_var # "c"

更多信息: http://www.railstips.org/blog/archives/2006/11/18/class-and-instance-variables-in-ruby/

关于ruby 动态添加类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27007827/

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