类体可执行的意义是什么?

mei*_*zin 4 ruby

类主体可执行,如下代码所示:

3.times do
  class C
    puts "hello"
  end
end
Run Code Online (Sandbox Code Playgroud)

那有什么意义?我没有看到类体可执行的重要性.是因为我们需要顶层的代码来执行,还是能够返回一个值?如果这不是唯一的原因,是否有一个很好的例子来表明这是一个好主意?

Ama*_*dan 6

有几个简单的例子:

它允许属性访问器之类的工作:

class Dog
  attr_reader :name
end
Run Code Online (Sandbox Code Playgroud)

attr_reader和来自该系列的其他人只是在上下文中执行的方法,其中self是一个类对象.它们不是声明; 它们实际上是在执行类时执行的.因此,它取决于Ruby在定义类时调用方法的能力.

它允许条件定义:

class OptimisedClass
  if defined? JRUBY_VERSION
    def do_stuff
      jruby_optimised_stuff
    end
  else
    def stuff
      c_optimised_stuff
    end
  end
end
Run Code Online (Sandbox Code Playgroud)