是INSTANCE =类中的new是在自动编译后还是第一次访问时运行?

时间:2016-09-15 04:27:25

标签: crystal-lang

这个问题说明了一切。例如:

class Foo
  INSTANCE = new

  def initialize
    p "initialized"
  end
end

仅在访问Foo :: INSTANCE时打印,而不是在编译后自动打印。

这是预期的行为吗?

1 个答案:

答案 0 :(得分:2)

现在,如果你不使用常数,它甚至不会被选中。因此,只有在使用常量时才会执行常量。这可能在将来发生变化。