有一种简单的方法可以通过Ruby中的类方法初始化类变量吗?我正在尝试这个:
class MyClass
@@product_families = MyClass.load_pgrollups(File.join(File.dirname(__FILE__), ASSETS_FOLDER_NAME, PGROLLUP_CSV_FILENAME))
def self.load_pgrollups(csv_file)
....
return product_families
end
我得到一个例外:未定义的方法`load_pgrollups'用于ModuleName :: myClass:Class
我不一定要初始化一个类变量。我还尝试通过模块函数
初始化模块中的常量module ModuleName
PRODUCT_FAMILIES = load_pgrollups(File.join(File.dirname(__FILE__), ASSETS_FOLDER_NAME, PGROLLUP_CSV_FILENAME))
def load_pgrollups(csv_file)
....
return product_families
end
但我为MyModule获取了未定义的方法`load_pgrollups':模块
答案 0 :(得分:5)
定义后调用它:
class myClass
def self.load_pgrollups(csv_file)
....
return product_families
end
@@product_families = load_pgrollups(File.join(__dir__, ASSETS_FOLDER_NAME, PGROLLUP_CSV_FILENAME))
end
答案 1 :(得分:2)
您可以在第4行中定义方法,但是您已在第2行调用它,但尚未定义它。所以,是的,该方法在您调用它时未定义。