-2

ruby では . オブジェクトを持つオペレーターは.、メッセージを送信するのに役立ちます (右に.)。

上記の原則と this-を使用すると、オペレーターはオブジェクトにメッセージを送信している"100".to_sと言えます。良いですね!.to_s100

では、はputs("hello")どうですか?地元の Ruby 専門家への質問は次のとおりです。

  1. どこ 。オペレーター?

  2. ここの受け手は誰ですか?

4

2 に答える 2

8

この場合の受信者は暗黙的selfです。putsの方法ですKernel。すべてのクラスにカーネル モジュールが含まれているため、すべてのオブジェクトにputsメソッドがあります。唯一のことは、それはプライベートです。selfプライベート メソッドは暗黙的に(または を使用してsend)のみ呼び出すことができます

puts 'foo' # >> foo
1.puts 'bar' # ~> -:3:in `<main>': private method `puts' called for 1:Fixnum (NoMethodError)


1.send :puts, 'bar' # >> bar
于 2013-02-10T14:36:52.127 に答える
2

レシーバーは省略され、selfそのコンテキストにあります。したがって、.も省略されます。putsは のメソッドでKernelあり、受信者が何であれ、インスタンスを持つ任意のクラスに含まれているputsため、アクセスできます。Kernel

于 2013-02-10T14:35:06.610 に答える