これは重複した質問かもしれませんが、Rubyのprintとputsの違いは何ですか?例を挙げて答えてもらえますか?
5 に答える
print
最後に改行を追加しませんputs
。
他のほとんどの言語も同様の構造を持っています。
JavaにSystem.out.println()
はSystem.out.print()
C#にConsole.WriteLine()
はConsole.Write()
パスカルWriteln()
はWrite()
簡単だ。puts
印刷時に改行を自動的に追加します。print
文字列を変更せずに出力します。
もう1つの違いは、基になる書き込み操作の数にあります。puts
(大まかに)次と同等です:
STDOUT.write(str)
STDOUT.write("\n")
そしてprint
(大まかに)同等です:
STDOUT.write(str)
したがって、マルチスレッド環境でputs
は、次のような奇妙な外観のものを作成できます。
Message1Messa
ge2
(blank line)
print
連結された改行を使用して文字列を作成すると、次のようになります。
Message1
Message2
それ以外は同じです。
irb(main):014:0> class Person
irb(main):015:1> attr_accessor :name, :age, :gender
irb(main):016:1> end
=> nil
irb(main):017:0> person = Person.new
=> #<Person:0x2bf03e0>
irb(main):018:0> person.name = "Robert"
=> "Robert"
irb(main):019:0> person.age = 52
=> 52
irb(main):020:0> person.gender = "male"
=> "male"
irb(main):021:0> puts person
#<Person:0x2bf03e0>
=> nil
irb(main):022:0> print person
#<Person:0x2bf03e0>=> nil
irb(main):023:0> print person.name
Robert=> nil
irb(main):024:0> puts person.name
Robert
=> nil
printとputsの違いは、putsは出力カーソルを自動的に次の行に移動する(つまり、文字列がすでに改行で終わっていない限り、新しい行を開始するために改行文字を追加する)のに対し、printは同じ文字列にテキストを印刷し続けることです。前回と同じ行。
putsの前には、メソッドを完成させるクラスまたはオブジェクトの名前はありません。putsは、Kernelモジュールから利用できるようになっているメソッドであり、デフォルトで含まれて検索されるため、通常、Kernelを使用する必要はありません。それを参照するために置きます。
Kernel.puts "Hello, world!"
putsは引数を1つだけ取り、他のメソッドやロジックが続くことはめったにないため、括弧は厳密には必要ありません。
一般に、プットとプリントには2つの大きな違いがあります。
1.改行
puts
すべての要素を取り、改行で出力します(最後に改行文字の必要性を指定せず"\n"
に)
一方、printは、プログラマーが明示的に指定しない限り、各要素を新しい行に出力しません。
puts "Hello, Welcome to Ruby"
出力:
Hello, Welcome to Ruby
Dell-System-XPS:~/Documents/2016RoR/Ruby$
print "Hello, Welcome to Ruby"
出力:
Hello, Welcome to RubyDell-System-XPS:~/Documents/2016RoR/Ruby$
お気づきのとおり、出力の後に改行はありません。ただし、以下のように改行文字を明示的に指定すると、改行は機能するはずです。
print "Hello, Welcome to Ruby \n"
出力:
Hello, Welcome to Ruby
Dell-System-XPS:~/Documents/2016RoR/Ruby$
2.空の文字またはNIL値
print
ステートメントは空の値またはNIL値を出力しますが、putsステートメントに値が含まれている場合はそれらを出力しませんNIL
。
> print [nil, 33,44,55]
> [nil, 33, 44, 55] => nil
> puts [nil, 33,44,55]
> 33
> 44
> 55
=> nil
「違いがわかります。使用中にNIL値が出力されませんputs
。」
比較は、 printとputで見ることができます。たとえば、Rubyの入力と出力を見てください。