谁能帮助我将这个简单的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

09-13 01:02