Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

Ruby | Kernel | print

概要

Kernel#print(*arg) -> nil

詳細

引数を順に標準出力 $stdout に出力します。引数が与えられない時には変数 「$_」 の値を出力します。
文字列以外が与えられた場合は to_s して出力する。
変数 「$,」 に値がセットされている場合は、各引数の間にその値を挿入する。
変数 「$,」 は Array#join の引数省略時にも利用される。
変数 $\ (出力レコードセパレータ)に nil でな い値がセットされている時には、最後にそれを出力する。

サンプルコード:自作クラスの to_s の出力確認

Personクラスを作成し、attributesとしてnameとageを定義します。
to_sはnameを返します。

class Person
  attr_reader :name, :age
  def initialize(name, age)
    @name, @age = name, age
  end
end

tanaka = Person.new('tanaka', 97)
print tanaka

# クラスをオープンして to_s を追加
class Person
  def to_s
    @name
  end
end

puts
print tanaka

出力

#<Person:0x2ad5198>
tanaka
サンプルコード:セパレータ有無の確認

セパレータ($,)の有無による出力内容の確認

args = [*1..5]
print *args
puts
$, = '@'
print *args
puts

出力

12345
1@2@3@4@5

サンプルコード:出力レコードセパレータ有無の確認

args = [*1..5]
print *args
puts
$\ = '[Finish]'
print *args
puts

出力

12345
12345[Finish]

サンプルコード:引数省略時

コマンドラインで検証。 {1..3}はブレース展開で '1 2 3'になる。
print の引数が省略されているため gets によって $_ に1行読み込んだ結果が出力される。

$ echo {1..3} | tr ' ' '\n' | ruby -e 'gets;print;gets;print'
1
2