質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

解決済

Rubyプログラムのirbコマンド実行時の表示について

slime
slime

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

1回答

0評価

0クリップ

1648閲覧

投稿2019/01/24 05:18

編集2022/01/12 10:58

MacPCでRuby学習のためにirbコマンドを使用しているのですが、後述する解釈に相違がないことと、疑問点について回答いただけないでしょうか。

私の解釈

解釈1:「:001:0:」の「001」はirb実行開始してから入力した行数を表している。

bash

irb(main):001:0>

解釈2:末尾が「>」だと入力待ちを表している。

bash

irb(main):001:0>

解釈3:末尾が「=」だと複数行コメント入力中を表している。

bash

irb(main):002:0=

解釈4:末尾の「:1>」部分の数字は階層を表しており、階層が深くなるほど数字が大きくなることを表している。

bash

irb(main):003:1>

疑問点

疑問1:末尾が「*」だと何を表している?

bash

irb(main):011:0*

疑問2:末尾が「/」だと何を表している?

bash

irb(main):004:0/

私が確認した内容

次のプログラムをRubyファイルとして実行すると問題なく動作する。

しかし、irb上で実行すると5行目の結果が出力されない。

ruby

hash = {name: "takashi", score: {english: 46, math: 80, japanese: 90}, age: 15} sum = 0 hash[:score].each_value{|val| sum += val} average = sum /hash[:score].length puts "takashi’s mark totaled #{sum}, the average mark is #{average}"

irb上で動作NGになる原因を調査したところ、4行目の「/」の後に半角スペースがないことが原因だと分かった。

Ruby

hash = {name: "takashi", score: {english: 46, math: 80, japanese: 90}, age: 15} sum = 0 hash[:score].each_value{|val| sum += val} average = sum / hash[:score].length puts "takashi’s mark totaled #{sum}, the average mark is #{average}"

この現象よりirb上で「/」単体で入力した時の挙動が気になり、試してみたところ次のような結果になった。

bash

hiraonoMacBook-Air:~ hirao$ irb irb(main):001:0> a = 10 => 10 irb(main):002:0> / irb(main):003:0/ a = 20 irb(main):004:0/ irb(main):005:0/ / => / a = 20 / irb(main):006:0> a = 30 => 30 irb(main):007:0>

この結果より、「/」がこのような動作になるということは、同じ演算子である「+」「-」「*」でも同じ動作になるのか気になり試してみると、次のような結果になった。

bash

hiraonoMacBook-Air:~ hirao$ irb irb(main):001:0> + irb(main):002:0* + irb(main):003:0* + irb(main):004:0* a=10 => 10 irb(main):005:0> - irb(main):006:0* irb(main):007:0* - irb(main):008:0* irb(main):009:0* a=10 => 10 irb(main):010:0> * irb(main):011:0* irb(main):012:0* * irb(main):013:0* irb(main):014:0* a=10 Traceback (most recent call last): 1: from /usr/local/bin/irb:11:in `<main>' SyntaxError ((irb):12: syntax error, unexpected *, expecting '=') irb(main):015:0>

末尾が「>」から「*」に変わり、同じ演算子を再度入力しても戻らず「a=10」で改善された。

但し、「*」演算子はSyntacErrorとなってしまった。

因みにifやwhile文を入力すると次のようになる。

尾の「:0>」が「:1>」に変わることで、1回の字下げを表している思われ、この数字は階層が深くなるほど増えていくと解釈している。

bash

hiraonoMacBook-Air:~ hirao$ irb irb(main):001:0> a = 10 => 10 irb(main):002:0> if a > 5 irb(main):003:1> puts("a>5") irb(main):004:1> end a>5 => nil irb(main):005:0>

また、復習行コメントの場合は次のような表示なる。

これは、末尾が「=」に変わりコメント記載中であることを表していると解釈している。

bash

hiraonoMacBook-Air:~ hirao$ irb irb(main):001:0> =begin irb(main):002:0= この部分はコメント irb(main):003:0= 何行でも書くことができる irb(main):004:0= =end irb(main):005:0>

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。