irb でのインタラクション例(コメント付き)

Microsoft Windows [Version 10.0.17134.706]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\Users\nobu>irb
irb(main):001:0> a=1                    # 変数の宣言と代入
=> 1
irb(main):002:0> a                          # その変数の値を参照する
=> 1
irb(main):003:0> b                          # 未定義の変数だとこういう応答になる
NameError: undefined local variable or method `b' for main:Object
        from (irb):3
        from C:/Ruby24-x64/bin/irb.cmd:19:in `<main>'
irb(main):004:0> a=2                    #変数の値は後から変更が可能(
=> 2
irb(main):005:0> a                          # 変更されていますね
=> 2
irb(main):006:0> a="hello"      #最初は数値だったが違う型の値も代入できる
=> "hello"                                              #代入された値によって変数の型が自在に変化する
irb(main):007:0> a
=> "hello"
irb(main):008:0> a.class                    #今は文字列(String)型だとわかる
=> String
irb(main):009:0> a=1                            #数値に戻すと、
=> 1
irb(main):010:0> a.class                    #今は整数(Integer)型
=> Integer
irb(main):011:0> def abc            #関数定義の例
irb(main):012:1> 1+2+3
irb(main):013:1> end                            #def 〜 end で定義する
=> :abc
irb(main):014:0> abc                            #その関数名を呼び出す
=> 6
irb(main):015:0> abc                            #単純な関数なので何度呼んでも値は同じ
=> 6
irb(main):016:0> def dbl(x)     #引数(として与えた値)によって結果が変わる関数の例
irb(main):017:1> x*2
irb(main):018:1> end                            #値 x を2倍した数値を返す関数
=> :dbl
irb(main):019:0> dbl(3)                     #呼んでみる
=> 6
irb(main):020:0> dbl(10)                    #括弧に包んで渡した値が2倍されて戻ってきている
=> 20
irb(main):021:0> dbl 3              #関数呼び出しの文法のバリエーション 括弧を省略していい
=> 6
irb(main):022:0> dbl3                           #このとき間にスペースは必要 スペースがないと1つの単語だと見なされるので
NameError: undefined local variable or method `dbl3' for main:Object
Did you mean?  dbl
        from (irb):22
        from C:/Ruby24-x64/bin/irb.cmd:19:in `<main>'
irb(main):023:0> def plus(x,y)  #2引数の関数の例
irb(main):024:1> x+y
irb(main):025:1> end
=> :plus
irb(main):026:0> plus(1,2)          #それを呼び出してみる
=> 3
irb(main):027:0> plus 1,2               #括弧を省略してもいいが、引数相互間のかンマは必要
=> 3
irb(main):028:0> plus 1,     2  #余分なスペースが挟まっても大丈夫
=> 3
irb(main):029:0> plus 1   ,     2
=> 3
irb(main):030:0> plus 1      2  #しかし、カンマを省略するとエラーになる
SyntaxError: (irb):30: syntax error, unexpected tINTEGER, expecting end-of-input
plus 1      2
             ^
        from C:/Ruby24-x64/bin/irb.cmd:19:in `<main>'
irb(main):031:0> a                          #さっき変数 a を作ったことを思い出しておいて……
=> 1
irb(main):032:0> def a                  #さらに 関数 a (同じ名前)を定義してみる
irb(main):033:1> "hello world"
irb(main):034:1> end
=> :a
irb(main):035:0> a                          # 単に a とだけ呼ぶと、
=> 1                                                            # 変数 aの値が返される
irb(main):036:0> a()                        #括弧 () を後置すると、
=> "hello world"                                    #関数呼び出しとして扱われる
irb(main):037:0> AAA=1                  #変数名は小文字で始まるルールだが、
=> 1
irb(main):038:0> AAA                            #実際には定義できてしまう(が、避けたほうがいい)
=> 1
irb(main):039:0> Kernel                 #これはモジュール名として作り付けの変数名
=> Kernel
irb(main):040:0> Kernel.class           #モジュールクラスの名前だとわかる
=> Module
irb(main):041:0> Kernel.gets        #普通に gets 関数を呼ぶのと同じ動作
faijwefiae
=> "faijwefiae\n"
irb(main):042:0> a=b=c=1                #連鎖的代入の例(代入式が値を持つ、というルールによる)
=> 1
irb(main):043:0> b                              #上記により、変数 b、
=> 1
irb(main):044:0> c                              #c、にも同じ値が代入されている
=> 1
irb(main):045:0>
irb(main):046:0*
irb(main):047:0*
irb(main):048:0* puts gets          #読み込んで印字する機能(を書く書き方の1つ)
kfhaefgaejh
kfhaefgaejh
=> nil
irb(main):049:0>