MacPCでRuby学習のためにirbコマンドを使用しているのですが、後述する解釈に相違がないことと、疑問点について回答いただけないでしょうか。
私の解釈
解釈1:「:001:0>」の「001」はirb実行開始してから入力した行数を表している。
bash
1irb(main):001:0>
解釈2:「:001:1>」の[:1>」部分の数字は階層を表しており、階層が深くなるほど数字が大きくなることを表している。
bash
1irb(main):003:1>
解釈3:末尾が「>」だと入力待ちを表している。
bash
1 irb(main):001:0>
解釈4:末尾が「=」だと複数行コメント入力中を表している。
bash
1irb(main):002:0=
疑問点
疑問1:末尾が「*」だと何を表している?
bash
1irb(main):011:0*
疑問2:末尾が「/」だと何を表している?
bash
1irb(main):004:0/
私が確認した内容
次のプログラムをRubyファイルとして実行すると問題なく動作する。
しかし、irb上で実行すると5行目の結果が出力されない。
ruby
1hash = {name: "takashi", score: {english: 46, math: 80, japanese: 90}, age: 15} 2sum = 0 3hash[:score].each_value{|val| sum += val} 4average = sum /hash[:score].length 5puts "takashi’s mark totaled #{sum}, the average mark is #{average}"
irb上で動作NGになる原因を調査したところ、4行目の「/」の後に半角スペースがないことが原因だと分かった。
Ruby
1hash = {name: "takashi", score: {english: 46, math: 80, japanese: 90}, age: 15} 2sum = 0 3hash[:score].each_value{|val| sum += val} 4average = sum / hash[:score].length 5puts "takashi’s mark totaled #{sum}, the average mark is #{average}"
この現象よりirb上で「/」単体で入力した時の挙動が気になり、試してみたところ次のような結果になった。
bash
1hiraonoMacBook-Air:~ hirao$ irb 2irb(main):001:0> a = 10 3=> 10 4irb(main):002:0> / 5irb(main):003:0/ a = 20 6irb(main):004:0/ 7irb(main):005:0/ / 8=> / 9a = 20 10 11/ 12irb(main):006:0> a = 30 13=> 30 14irb(main):007:0>
この結果より、「/」がこのような動作になるということは、同じ演算子である「+」「-」「*」でも同じ動作になるのか気になり試してみると、次のような結果になった。
bash
1hiraonoMacBook-Air:~ hirao$ irb 2irb(main):001:0> + 3irb(main):002:0* + 4irb(main):003:0* + 5irb(main):004:0* a=10 6=> 10 7irb(main):005:0> - 8irb(main):006:0* 9irb(main):007:0* - 10irb(main):008:0* 11irb(main):009:0* a=10 12=> 10 13irb(main):010:0> * 14irb(main):011:0* 15irb(main):012:0* * 16irb(main):013:0* 17irb(main):014:0* a=10 18Traceback (most recent call last): 19 1: from /usr/local/bin/irb:11:in `<main>' 20SyntaxError ((irb):12: syntax error, unexpected *, expecting '=') 21irb(main):015:0>
末尾が「>」から「*」に変わり、同じ演算子を再度入力しても戻らず「a=10」で改善された。
但し、「*」演算子はSyntacErrorとなってしまった。
因みにifやwhile文を入力すると次のようになる。
尾の「:0>」が「:1>」に変わることで、1回の字下げを表している思われ、この数字は階層が深くなるほど増えていくと解釈している。
bash
1hiraonoMacBook-Air:~ hirao$ irb 2irb(main):001:0> a = 10 3=> 10 4irb(main):002:0> if a > 5 5irb(main):003:1> puts("a>5") 6irb(main):004:1> end 7a>5 8=> nil 9irb(main):005:0>
また、復習行コメントの場合は次のような表示なる。
これは、末尾が「=」に変わりコメント記載中であることを表していると解釈している。
bash
1hiraonoMacBook-Air:~ hirao$ irb 2irb(main):001:0> =begin 3irb(main):002:0= この部分はコメント 4irb(main):003:0= 何行でも書くことができる 5irb(main):004:0= =end 6irb(main):005:0>

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/24 07:18
2019/01/24 16:43