@Hauleth的回答是正确的:Ruby中没有main
方法或 struct .我只想在这里提供一个稍微不同的观点和一些解释.
当执行ruby somefile.rb
时,Ruby将执行somefile.rb
中的所有代码.因此,如果您有一个非常小的项目,并且希望它在单个文件中独立,那么这样做绝对没有错:
# somefile.rb
class MyClass
def say_hello
puts "Hello World"
end
end
def another_hello
puts "Hello World (from a method)"
end
c = MyClass.new
c.say_hello
another_hello
并不是前两个块没有执行,只是在实际使用相应的类/方法之前,您看不到效果.
if __FILE__ == $0
位只是一种阻止代码的方法,只有在直接从命令行运行此文件时,才需要运行这些代码.__FILE__
如果想直接执行代码,可以添加shebang行
#!/usr/bin/env ruby
# rest of somefile.rb
并使其具有chmod +x somefile.rb
可执行性(可选地重命名它,但不使用.rb扩展名).这并不能真正改变你的处境.if __FILE__ == $0
仍然有效,而且可能仍然没有必要.
Edit
正如@steenslag正确指出的,Ruby中的顶级作用域是一个名为main
的Object
.不过,它的行为有点古怪:
irb
>> self
=> main
>> self.class
=> Object
>> main
NameError: undefined local variable or method `main' for main:Object
from (irb):8
在你开始深入研究这门语言之前,不要担心这个问题.如果你想更多地了解这类知识,Metaprogramming Ruby是一本很棒的读物:)