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

あなたが書いたようにこれが機能しないいくつかの理由。

  1. メソッドfooは、呼び出そうとする前に宣言されていません。
  2. 宣言したように、メソッドfooはインスタンスメソッドです。クラスのインスタンスでそれを呼び出しているのではありません。

これはうまくいくでしょう:

class Bar
  def self.foo
  end

  foo
end

しかし、他の人が言っているように、おそらくこれをクラスでラップする必要はありません。

于 2013-02-13T21:19:17.310 に答える
1

クラスは必要ありません。ファイル自体から好きなメソッドを呼び出すことができます。

bar.rb:

puts "Hello, world!"

コードに固執したい場合は、fooその宣言の前に呼び出していますが、これは明らかに機能しません。

于 2013-02-13T21:13:03.253 に答える
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 に答える