1

ルビに2つの数値を追加するとわかるように、 '+'メソッドは現在のオブジェクトに対して、次のオブジェクトとしてパラメータとともに呼び出されます。ルビで演算子を使用するとどうなるのですか?

>> 2 + 3 
=> 5 



>> 2.+(3) 
=> 5 

これら2つの例は同じですが、ドット演算子を使用しないオブジェクトでメソッドを呼び出すことは可能でしょうか?最初の例ではどうなっていますか?そうであれば、 '+'メソッドで呼ばれるメソッドメソッドとすることができますか? (それは理にかなっていません)

答えて

4

Rubyは、言語の文法がこう言っているので、+が演算子であることを知っています。また、[email protected] methodに変換された単一+演算子があり、その言語の文法によってRubyはどちらがどちらであるかを知ることができます。言語定義では、演算子はメソッド呼び出しとして実装され、各演算子がどのメソッドにマップするかを指定します。

o.m amメソッドの呼び出しをoに、aを引数として要求するのと同じことです。 Rubyの構文とセマンティクスがどのように定義されているかだけです。

演算子は理論的数学であっても関数です。 a + b表記は実際のためだけ便利表記で+(a, b)(ここ+RRまたは例えばRにR × Rから機能)。私はあなたが記法にあまりにも多くを読んでいると思うし、演算子は特別なものだと思っています、彼らはそうではありません、彼らはコンピュータ言語と数学の関数呼び出しです。

つまり、Rubyが動作するように定義されているためです。

は限り

の方法の方法は、 '+' メソッドに3と呼ばれるだろうか?

は、3はFixnumかオブジェクト2+メソッドへ引数又はパラメータあります。

1

a + bは。+(b)の単なる砂糖構文です。ルビではほとんどすべてがオブジェクトであり、「演算子」さえも実際には数のメソッドです。砂糖の構文よりも魔法はありません。

関連する問題