• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:二項演算子の定義)

理解できない箇所を解説!二項演算子の定義について

このQ&Aのポイント
  • rubyを学び始めた超初心者が二項演算子の定義について質問しています。具体的には、参考プログラムで表記されている「other.x」と「other.y」の意味について理解できないと述べています。また、class定義が終了していないのに使用している点にも疑問を持っています。
  • 二項演算子の定義について理解できない箇所があります。参考プログラムで「other.x」と「other.y」という表記がありますが、これはベクトルの加算や減算を行うための演算子です。「other.x」は引数として与えられたベクトルのx座標、同様に「other.y」はy座標を表しています。
  • 学習中の超初心者が二項演算子の定義について質問しています。参考プログラムでの「other.x」と「other.y」は、引数として与えられたベクトルのx座標とy座標を表しています。これらの値を元のベクトルのx座標とy座標に加算する処理を行っています。また、class定義が終了していないのに使用している点に関しては、文法的なエラーではありませんが、書き方としては適切ではありません。

質問者が選んだベストアンサー

  • ベストアンサー
  • hisappy
  • ベストアンサー率46% (184/392)
回答No.1

はーい。Rubyを学び始めたいと思っている者です。 一応雑誌の記事を読んだ事ある程度の知識と 一応プログラマしてた知識をを総動員したフリして 解説っぽく回答します。 なので、回答内容が正しいかどうかもあわせての検証をお願いします。 各行の頭についている数字は行番号という認識で進めていきます。 では始まり始まり。 1:クラスVecの宣言。 2:Vec用変数xとyの宣言。 3:いきなり使われるとx、yの中身は不定なので初期化(?)。 4:…何だろう?初期化の実体? 5:初期化の終端。 6: 7:表示処理の…関数みたいなもの? 8:表示処理の実体? 9:表示の終端。 10: 11:足し算する時はこうよ。宣言 12:足し算処理はこうするのね。 13:足し算終端。 14: 15:引き算する時はこうよ。宣言 16:引き算処理はこうするのね。 17:引き算終端。 18:---クラスVecの終端? 19: 20:vec0として、xに3、yに6をセットします。 21:vec1として、xに1、yに8をセットします。 22: 23:vec0の内容を表示? (3,6) 24:vex1の内容を表示? (1,8) 25:vec0とvec1を足して表示? (4,14) こんな感じでしょうか。 では質問文に対しての回答。 @が付いているのは12行目の場合、"+"の左側にきたもののデータ。 25行目でいうvec0に格納(?)されているxが3でyは6。 に対して、other.xとother.yは"+"の右側にきたもののデータのxとy。 25行目でのvec1の部分に相当。 つまり、25行目では「vex0とvex1のx同士、y同士を足しますよ」 と言っているものと思われます。 頭にpが付いているので表示処理も合わせて行うと推測しました。 さて、現実はいかに?

a_yamada
質問者

お礼

詳細な説明ありがとうございます。 非常によく理解できました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

> 12行,16行 Vec.new(@x + other.x, @y + other.y) > other., other.yの表記の意味が理解できません。 > class定義が終了していないのに使用している そもそも、Rubyの場合、ここでのotherがclass Vecであるとは限りません。 x,yというメソッドなり属性なりを持っていて、それぞれが@x,@yと演算できるオブジェクトを返すのだったら、なんでもいいはずです。 C++やJava等のような、宣言が必要な言語と混同していませんか? もっとも、そういった言語でも「クラスの定義が終了していない」状態でも、宣言さえあれば使用できますが。 // C++の例: class Vec{ //定義開始 public: double x; double y; // 「定義」の途中だけどVecクラスを使っている Vec& operator+=(const Vec& other){ this->x += other.x ; this->y += other.y ; return *this ; } }; // Vecの定義終了

a_yamada
質問者

お礼

回答ありがとうございます。 やはり60過ぎてプログラムの勉強は難しいですね。 >C++やJava等のような、宣言が必要な言語と混同していませんか? 他のプログラム言語はよく知りません。

すると、全ての回答が全文表示されます。

関連するQ&A