2

メソッドの戻り値は、最後のステートメントの値です。これは、内部でメソッドMyclass.newの以下の定義に従うことを意味します。initializesuper

class Myclass < String
  def initialize(arg)
    super(arg.to_s)
    "something"
  end
end

返すべき"something"です。しかし、"test"代わりに次のように返します。

Myclass.new("test") # => "test"

なんで?

4

3 に答える 3

4

あなたは呼んでいませんinitialize、あなたは呼んでいますnew。このinitializeメソッドは基本的に、新しいオブジェクトを作成するときに実行されるフックですが、通常は直接呼び出されることはありません。

于 2013-09-03T00:20:40.697 に答える
1

メソッドの戻り値を取得したい場合は、initializeメソッドを呼び出す必要がありますinitialize。まったく異なるメソッドを呼び出した場合、まったく異なる戻り値が得られるのは正常なことです。

于 2013-09-03T08:14:38.663 に答える