####print ###1 ##説明 引数をすべて画面に出力(print)するメソッド。 文字列以外が与えられた場合は to_s した結果を、引数を省略した場合は変数 $_ の値を出力する。 Kernel モジュールに定義されているものを取り上げる。 ###2 ##構文 print(*arg) -> nil すなわち print(出力したいもの) -> nil ##引数 *arg 出力したいものを指定する。複数指定可。 ##戻り値 nil ###3 ##用例1 引数を出力する。(括弧)は省略できる。 print("ほげ") # ほげ => nil print "ほげ" # ほげ => nil print "ふー", "ばー" # ふーばー => nil print nil # => nil gets print # (getsで取得した内容) => nil 文字列以外を指定した場合↓ print 123 # 123 => nil var = 123 print var # 123 => nil print [1, 2, 3] # [1, 2, 3] => nil ###4 ##用例2 $, (出力フィールドセパレータ)と $\ (出力レコードセパレータ)との関係 print 123456 # 123456 => nil print 1, 23, 456 # 123456 => nil $, = "/" print 123456 # 123456 => nil print 1, 23, 456 # 1/23/456 =>nil $\ = "end" print 123456 # 123456end => nil print 1, 23, 456 # 1/23/456end => nil ###5 ##例外 IOError 標準出力が書き込み用にオープンされていない。 Errno::EXXX:: 出力に失敗した。 XXXには大文字英数字が入る。 ##一口コメント printに引数指定しなかったときの挙動をはじめて知った… ###6 ##関連 puts p to_s $_ $, $\ $stdscr $stdout ####puts ###1 ##説明 画面に文字列を出力(put string)するメソッド。 print と違って、出力するとき、それぞれの引数の最後に改行 \n をつける。 引数を指定しなかった場合は改行のみを出力する。 Kernel モジュールに定義されているものを取り上げる。 読み方は「プットエス」(たぶん)。 ###2 ##構文 puts(*arg) -> nil すなわち puts(出力したいもの) -> nil ##引数 *arg 出力するものを指定する。複数指定可。 ##戻り値 nil ###3 ##用例 引数に渡されたものを改行付きで出力する。(括弧)は省略できる。改行で終わっている場合はそのまま出力。 puts("ほげ") # ほげ # => nil puts "ほげ" # ほげ # => nil puts "ほげ\n" # ほげ # => nil 引数を省略した、または空文字列や nil を指定したときは、改行のみを出力。 puts # # => nil puts "" # # => nil puts nil # # => nil 複数(配列で)渡された場合は、要素と改行を順に出力する。 puts ["ふー", "ばー"] # ふー # ばー # => nil puts "ふー", "ばー" # ふー # ばー # => nil 配列や文字列ではない場合は、 to_ary からの to_s による変換を試みる。 puts 1..3 # 1 # 2 # 3 # => nil ###4 ##例外 IOError 標準出力が書き込み用にオープンされていない。 Errno::EXXX:: 出力に失敗した。 XXXには大文字英数字が入る。 ##一口コメント よく使うので重宝しています。 ###5 ##関連 print p to_ary to_s $stdscr $stdout ####p ###1 ##説明 引数を人間にわかりやすい形に、その"型"がわかるように整形して、改行と順番に出力するメソッド。 引数を指定しなかった場合は特に何もしない。 主にデバッグに使用される。 引数を *arg とおくと、 print arg[0].inspect, "\n", arg[1].inspect, "\n", ... にほぼ等しい。 定義されている場所は Kernel モジュール。 ###2 ##構文 p(*arg) -> Object | Array すなわち p(出力したいもの、値や型を知りたいもの) -> 指定した引数 ##引数 *arg 値や型を知りたいものを指定する。複数指定可。 ##戻り値 指定した引数が一つのときはそれ自身(Object)、 複数のときはそれらの配列(Array)を返す。 ###3 ##用例1 引数を、型がわかるように出力する。(括弧)は省略できる。 p(123) # 123 # => 123 p("123") # "123" # => "123" p 123 # 123 # => 123 p "123" # "123" # => "123" p 123, "123" # 123 # "123" # => [123, "123"] ###4 ##用例2 いろいろな場合の p を見てみよう〜 文字列 p "aiueo" # "aiueo" # => "aiueo" p 'aiueo' # "aiueo" # => "aiueo" p "12#{34}56\n7890" # "123456\n7890" # => "123456\n7890" p '12#{34}56\n7890' # "12#{34}56\\n7890" # => "12#{34}56\\n7890" 数(整数、浮動小数点数など) p 123 # 123 # => 123 p 12.34 # 12.34 # => 12.34 配列 p ['a', 1, 0.12] # ["a", 1, 0.12] # => ["a", 1, 0.12] ハッシュ p {a: 1, b: 2, c: 3} # => SyntaxError p {:a=>1, :b=>2, :c=>3} # => SyntaxError p {"a"=>1, "b"=>2, "c"=>3} # => SyntaxError 曰くローカル変数やメソッドじゃないとだめらしい...なんでだろう? hash = {a: 1, b: 2, c: 3} p hash # {:a=>1, :b=>2, :c=>3} # => {:a=>1, :b=>2, :c=>3} いけた...なんで?? ...などなど(以下略) ###5 ##用例3 puts などとの比較 puts "" # # => nil print "" # => nil p "" # "" # => "" puts # # => nil print # (変数 $_ を出力) => nil p # => nil ###6 ##例外 IOError 標準出力が書き込み用にオープンされていない。 Errno::EXXX:: 出力に失敗した。 XXXには大文字英数字が入る。 ###7 ##面白い?使い方 式と p p(123 + 654) # 777 # => 777 ( p の引数の 123 + 654 を評価し、計算結果の 777 が出力される) p 123 + 654 # 777 # => 777 ( 〃 ) p (123 + 654) # 777 # => 777 ( p の引数の (123 + 654) を評価し、計算結果の 777 が出力される) p((123 + 654)) # 777 # => 777 ( 〃 ) (p 123) + 654 # 123 # => 777 ( p 123 により 123 が出力、その戻り値の 123 に 654 を足した 777 が返ってくる) p p p "aiueo" # "aiueo" # "aiueo" # "aiueo" # => "aiueo" ( p (p (p "aiueo")) と同じ、p "aiueo" の戻り値を p した戻り値を p している。ややこしや) ##一口コメント 意外と使ってみると便利。 ###8 ##備考 ハッシュのやつ、なにか判明次第ここに書き込みます… ###9 ##関連 inspect puts print $stdscr $stdout ####gets ###1 ##説明 文字列を読み込む(get string)メソッド。 ARGF から1行読み込んで、その値を返す。 ARGF に何もセットされていないときは標準入力を使う。 引数を指定すると、改行ではなくその文字列が現れるところで区切る。 読み込んだ文字列は変数 $_ にも格納される。 C-d で読み込みを中断し、その時点で読み込んでいた文字列を返す。 Kernel モジュールに定義されているものを取り上げる。 読み方は「ゲットエス」(たぶん)。 ###2 ##構文 gets(rs = $/) -> String | nil すなわち gets(区切る文字) -> 読み込んだ文字列 または nil ##引数 rs 区切る文字を指定する。デフォルト値は変数 $/ ( $/ の既定値は "\n" )。 nil を指定すると、読み込んでいるファイルの終わりまで全て読み込む。 標準入力を使っているときは C-d で中断するまで止まらない。 "" (空文字列)を指定するとパラグラフモードになり、2連続の改行 \n まで読み込む。 (整数を指定するとそのバイト数だけ読み込む。確証はない。) ##戻り値 読み込んだ文字列を返す。 ファイルの終わり( EOF …"E"nd "O"f "F"ile)に到達したときや、 標準入力に何も入力しないまま C-d で中断したときは nil を返す。 ###3 ##用例1 標準入力を使う例: 引数を指定すると面白いことが起こる。 実際に irb を開いて実行するとわかりやすい。 gets # => "(入力した内容)\n" gets("あああ") #野菜が(改行)キライ(改行)だああああうそです(改行) と入力 => "野菜が\nキライ\nだあああ" gets #さっき入力した文字列のうち余ったものを(改行で区切ったところまで)返す => "あうそです\n" gets(10) #くぁwせdrftgyふじこlp(改行) と入力 => "くぁwせ" …く→3byte、ぁ→3byte、w→1byte、せ→3byte 合計10byte gets #余りを返す => "drftgyふじこlp\n" gets(10) #あああああ(改行) と入力 => "ああああ" …あ→3byte、あ×3→9byte、あ×4→12byte gets # => "あ\n" ###4 ##用例2 ARGF を使う例: ARGV << vegetables.txt << fruits.txt gets # => "tomato\n" gets("") # => "cucumber\ncarrot\n\n" gets(nil) # => "cabbage\nlettus\n\nradish\nzucchini" gets("apple") # => "banana\napple" gets(6) # => "\nkiwi\n" gets(nil) # => "mango\norange" gets # => nil ---vegetables.txt--- tomato cucumber carrot cabbage lettus radish zucchini -------------------- -----fruits.txt----- banana apple kiwi mango orange -------------------- ###5 ##例外 Errno::EXXX:: 読み込みに失敗した。 XXXには大文字英数字が入る。 ###6 ##よくある便利な使い方 chomp メソッドと組み合わせると… 例) puts "名前を入力: " name = gets.chomp #←名前にはいらない改行 \n を取り除ける! Enter待ち 例) puts "Enterキーで進む" ; gets puts "後悔しませんか?" ; gets #←Enter(Return)で改行しないと進めないのを利用している 1000.times { print "あ" } ##一口コメント 標準入力以外の使い方や、引数の存在をはじめて知った。 ###7 ##関連 ARGF $/ $stdin readlines readline ####chomp ####to_i ####to_f ####to_s ####to_a ####to_h ####to_sym ####printf ####+ ####- ####* ####/ ####** ####= ####if ####unless ####case ####while ####until ####for ####break ####next ####redo ####retry ####raise ####begin ####return ####BEGIN ####END