类在需要时运行

时间:2014-05-25 09:20:38

标签: ruby class require

我需要一个包含类的文件,但从未为必需的类创建对象。但是,当我运行' main.rb'文件所需的类已启动。为什么?

main.rb的

require "./required_class.rb"

puts "This should be listed first"

required_class.rb

class Hello_World
    puts "Hello World"
end

2 个答案:

答案 0 :(得分:3)

在ruby类中,行为不像函数,它们在执行时进行评估。因为这个事实,你的课程实际上与简单无异:

puts "Hello World"

您所看到的是预期的,如果您只是在IRB中运行:

> class Hello_World
>     puts "Hello World"
> end
"Hello World"
=> nil

要在require包含它的文件时阻止它运行,你需要创建一个构造函数,如下所示:

class Hello_World
    def initialize
        puts "Hello World"
    end
end

现在,在运行Hello_World.new之前,您将看不到任何输出 如果您希望能够在不实例化的情况下打印消息,可以使用:

class Hello_World
    @@hello = "Hello World"
end

然后您可以使用puts Hello_World.hello

获取消息

答案 1 :(得分:2)

因为在需要时会对类的主体进行求值。通常,您会看到类定义返回nil,因为类中的最后一件事是方法定义(从2.1开始def返回方法的名称作为符号)。