4

在 Java 中,我们可以通过以下方式进行类级别的初始化——在类初始化时会自动调用那段代码。我们可以在 Ruby 中实现类似的效果吗?

static {
    initialization per class   
}
4

2 回答 2

1

只需将您的代码直接添加到类主体中:

class MyClass

  @my_var = 'init1'
  my_method 'init2'

  def self.my_method(param)
  end

end

加载类时将调用此代码。

PS:如果您正在从事 Rails 项目,您可能已经熟悉该概念:

class MyModel < ActiveRecord::Base
  has_many
  belongs_to
  validates
  scope
end

所有这些方法都在类级别上执行。

于 2013-05-26T08:54:43.713 回答
0

Ruby 的类是开放的,这意味着您可以在多个位置和运行时修改它们。因此 ruby​​ 没有类初始化。

但是,您的类定义中的任何代码都将被执行:

class A
  def foo
  end

  print 'Declaring class A'
end

class A
  def bar
  end

  print 'Adding methods to class A'
end
于 2013-05-26T08:49:04.740 回答