0

我有这个虚拟的 ruby​​ 类文件(Bar.rb):

class Bar

   foo() # execute foo()

  def foo()
      puts "Hello world, "
  end
end

我使用以下命令运行文件:

$ ruby Bar.rb

我期待在命令中看到“Hello, world”,但收到了这个错误:

undefined local variable or method `foo' for Bar:Class (NameError)
    from bar.rb:3:in `<main>'

那么如何执行一个方法呢?Ruby 是否有任何main方法(如在 Java 或 C/C++ 中)?

4

3 回答 3

1

首先定义方法,然后调用它。不需要主程序,类或方法之外的第一个代码将首先执行。脚本本身是主要的。我相信对此有更好的定义,但我相信你会理解的。

def foo()
  puts "Hello world, "
end

foo() # execute

也不需要把这个放在课堂上,然后你必须先启动她。

class Bar
  def foo()
      puts "Hello world, "
  end
end

bar = Bar.new
bar.foo
于 2013-02-13T21:12:26.677 回答
1

您不需要任何类,您可以直接从文件本身调用您喜欢的任何方法:

bar.rb:

puts "Hello, world!"

如果你想坚持你的代码,你foo在它的声明之前调用,这显然是行不通的。

于 2013-02-13T21:13:03.253 回答
1

正如你所写的那样,这有几个原因不起作用。

  1. 方法 foo 在您尝试调用它之前尚未声明。
  2. 正如您所声明的,方法 foo 是一个实例方法。您不是在类的实例上调用它。

这会起作用:

class Bar
  def self.foo
  end

  foo
end

但是,正如其他人所说,您可能不需要将其包装在一个类中。

于 2013-02-13T21:19:17.310 回答