####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