我尝试从终端运行Ruby脚本中的代码。我跑的时候没有任何事情发生
ruby Main.rb
。
# Main.rb
module Main
class MyClass
def initialize
puts "Hello World"
end
end
end
答案 0 :(得分:2)
您需要首先实例化您的类,因为在您调用MyClass #new之前,您的puts命令将不会执行。例如:
module Main
class MyClass
def initialize
puts "Hello World"
end
end
end
Main::MyClass.new
Hello World => #<Main::MyClass:0x007f9d92144308>
答案 1 :(得分:1)
因为它正在加载模块,然后无法使用它。它永远不会被实例化(初始化),只能被定义。
您可以像这样定义模块:
module Main
class MyClass
def initialize
puts "Hello World"
end
end
end
然后通过创建一个新的MyClass对象来初始化它。 (在同一文件的末尾)
test = Main::MyClass.new
Hello World => #<Main::MyClass:0x2979b88>
你可以通过直接运行文件而不是从另一个ruby文件加载文件时更好地处理这个问题。
if __FILE__ == $0
test = Main::MyClass.new
puts test
end
这样,您可以在代码直接运行时执行任何操作,例如,测试,但只是每隔一段时间静默加载模块。
直接运行文件时,它将如上所述,但在IRB中运行时,您将只看到以下内容:
=> nil