gpt4 book ai didi

ruby-on-rails - 如何调用方法在 Ruby 中加载类变量?

转载 作者:太空宇宙 更新时间:2023-11-03 16:07:47 26 4
gpt4 key购买 nike

数据加载一次,因为加载需要一段时间,不会改变,而且是共享的。这是一个静态类:我没有使用任何实例。

class Foo
@@ data = self.load_data

def self.load_data
.
.
.
end

def self.calculate
.
.
end
end

这会引发错误 NoMethodError: undefined method 'load_data' for Foo:Class 因为 load_data 出现在赋值之后。

我认为初始化不会起作用,因为我没有使用 f = Foo.new。我将它用作 Foo.calculate

调用load_data前是否需要声明?或者有更好的方法吗?

最佳答案

是的,Foo.load_data 在您调用它的时候还不存在。

更好的模式可能是为@@data 提供一个自动内存的访问器。

class Foo
def self.data
@@data ||= load_data
end
def data; self.class.data; end # if you need it in instances too

def self.load_data
...
end

def self.calculate
data.each {} # or whatever would have used @@data
end
end

关于ruby-on-rails - 如何调用方法在 Ruby 中加载类变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9987185/

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