それぞれで出力結果と返り値が異なる
それぞれ単体で動かしてみる。>> print "test" test=> nil # testが出力され、返り値はnilputs
>> puts "test" test # testが出力されて改行される => nil # 返り値はnulp
>> p "test" "test" # テキストオブジェクトが出力される => "test" # 返り値にもテキストオブジェクトが入るここからわかるのは
・printとputsは改行がある程度で大きく変わらない。(putsは文字列の最後で改行)
・pは返り値を持ちつつ、オブジェクトが属するクラス情報も保持している。
出力と返り値の関係を理解するためにいろんなパターンで動きを見てみる。
print puts "test"
puts が test を出力して改行。putsの返り値 nil が print に引き渡され、print の出力は何もなし、返り値はnil実行結果
>> print puts "test" test => nil
print p "test"
pが"test"を出力して改行。pの返り値"test"がprintに引き渡され、printがtestを出力し、返り値はnil実行結果
>> print p "test" "test" test=> nil
puts p "test"
pが"test"を出力して改行。pの返り値"test"がputsに引き渡され、putsがtestを出力して改行。返り値はnil実行結果
>> puts p "test" "test" test => nil
puts print "test"
printがtestを出力。printの返り値nilがputsに引き渡され、putsの出力は何もなしで改行。返り値はnil実行結果
>> puts print "test" test => nil
p print "test"
printがtestを出力。printの返り値nilがpに引き渡され、pはnilを出力して改行。返り値はnil実行結果
>> p print "test" testnil => nil
p puts "test"
putsがtestを出力して改行。putsの返り値nilがpに引き渡され、pはnilを出力して改行。返り値はnil実行結果
>> p puts "test" test nil => nil
0 件のコメント:
コメントを投稿