Ruby Codecademy の演習に取り組んでいるときに、puts() と print() に出くわしました。違いは、一方は改行を追加し、もう一方は追加しないことです。これは考慮された設計上の決定ですか、それともコードを進化させるだけですか? このために 2 つの (まったく異なる名前の) 関数があるのは奇妙に思えます。追加の引数やその他の解決策がないのはなぜですか?
編集:明確にするために、これらの特定の名前が選択された理由に最も興味があります.機能の違いに関連していないようです.
Ruby Codecademy の演習に取り組んでいるときに、puts() と print() に出くわしました。違いは、一方は改行を追加し、もう一方は追加しないことです。これは考慮された設計上の決定ですか、それともコードを進化させるだけですか? このために 2 つの (まったく異なる名前の) 関数があるのは奇妙に思えます。追加の引数やその他の解決策がないのはなぜですか?
編集:明確にするために、これらの特定の名前が選択された理由に最も興味があります.機能の違いに関連していないようです.
私はいつもそれがCから来ていると思っていました.Cではputs
、新しい行でprintf
文字列を出力し、タイプごとに補間された値で文字列を出力します(改行はありません)。
同様に、Rubyputs
では、これは同じことを行いprint
、補間には #{} を使用します。C との違いは明らかに、補間が文字列に直接組み込まれており、print ステートメントの内外で使用できることです。
改行を使用して行を印刷することは、日常の開発ではかなり一般的なタスクであるため、便宜上のものだと思います。
たとえば、Perl 言語では、1997 年に Perl 5.10 で say() 関数 (ruby の puts に相当) を明示的に導入しましたが、Perl は非常に長い間使用されていました。:-)
それは、Ruby が UNIX 指向であり、そこから受け継がれるいくつかの奇妙な点を受け継いでいるからだと思います。特に、端末は行指向であるため、つまり、ユーザーが行を入力すると、プログラムが行で応答し、ユーザーが行を入力し、...、何かを印刷するたびに行を終了したいことがよくあります。ありますputs
。ただし、(それほど頻繁ではありませんが) 行を終了させたくない場合があり、それがprint
.
と の両方を持っていても不自然ではありませんがprint
、よりも基本的なものと考えられる のほうがputs
不自然で、Ruby の入門書ではほとんどの場合最初に紹介されていますが、ほとんど説明されていません。はより初歩的な操作であり、その上に構築され、処理が遅いため、教科書では最初に紹介し、次にが の省略形であると説明する必要があります。puts
print
puts
print
print
puts
print
puts
print "...#$/"