【问题标题】:Class runs when require课程在需要时运行
【发布时间】:2014-07-14 06:19:22
【问题描述】:

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

main.rb

require "./required_class.rb"

puts "This should be listed first"

required_class.rb

class Hello_World
    puts "Hello World"
end

【问题讨论】:

    标签: ruby class require


    【解决方案1】:

    在 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得到消息了

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-25
        • 2011-02-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-03
        • 1970-01-01
        相关资源
        最近更新 更多