谁能帮助我将这个简单的Java代码转换为ruby。
class A {
private static String[] chachedNames;
public static String[] getNames(){
if(chachedNames == null)
chachedNames = prepareNames(); //This process will take 20sec to complete
return chachedNames;
}
}
我试图了解静态方法上的基本内存缓存。如何在Ruby上实现相同功能。
最佳答案
使用@@
分配与该类的所有实例共享的类变量:
class A
@@cached_names = nil
def self.get_names
@@cached_names = prepare_names if !@@cached_names
@@cached_names
end
end
关键字
self
表示将方法分配为类方法(类似于Java中的静态方法)。如果没有self
关键字,该方法将成为实例方法。这是一个不错的summary of class and instance methods: