2

putsステートメントを 1 つに結合できる方法がいくつかあることは知っています。しかし、もっと重要なことは、これに一般的に受け入れられている/推奨されるスタイルがあるかどうかを判断しようとしていることです (私は他の人の巧妙な方法を掘り下げることしかできませんでしたが、推奨されるスタイルに関する実際の参照はありません)。

私はこのようなものを見てきました:

puts "This", "is", "fairly", "easy"  # Each word goes on it's own line

多分:

puts ["This", "seems", "convoluted"].join("\n") # Each word goes on it's own line

または「醜い」方法:

  def ugly_puts
    puts "Not using quotes
And using no code indentation to preserve output formatting"
  end

または単に:

puts "This"
puts "Seems" 
puts "Straightforward."

最後の方法論を使用するのが最も理にかなっていますが、このような複数行の出力を処理するための一般的な/推奨される方法があるかどうかに興味があります。

4

2 に答える 2

4

印刷する行がソースの 1 行にまとめられるほど短い場合は、最初のオプションを使用します。

puts "This", "is", "fairly", "easy"

それらが長い場合は、ヒアドキュメントを使用します。

puts <<_.unindent
  This Blah Blah ...
  Seems Blah Blah ...
  Straightforward. Blah Blah ...
_

whereは、 Ruby indented multiline stringsunindentで提案されている行に沿って、インデントされたヒアドキュメントのインデントを解除する方法です。Ruby の将来のバージョンでは、ヒアドキュメントのインデントを解除するためのより簡単な方法が存在する可能性が高いため、このオプションがより便利になることに注意してください。

2 番目または 4 番目のオプションを使用しても意味がありません。3 番目は使用できますが、見栄えが悪くなります。

于 2015-11-18T07:23:53.110 に答える
1

TL;DR の好みと読みやすさ

以下のルビー スタイル ガイドを精査しました。

Ruby スタイルガイド

bbatsov の Ruby スタイルガイド

どちらも、複数の puts ステートメントを出力する特定の方法または推奨される方法について言及していません。

それは状況と優先の両方だと思います。この状況でより読みやすいものは何ですか? 複数の長い puts ステートメントが単純な文字列である場合は、それらを複数の行に分割して別々の puts ステートメントにします。

puts "Something very longgggggggggggg"
puts "Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an..."
puts  "unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing..."

何らかの理由で個別のステートメントを変数に保存している場合は、それらすべてを 1 行にまとめてください: puts this, that, thing.

puts ステートメントをメソッドに格納する場合、コンソールに数行出力したい場合に便利です。たとえば、ユーザーがターミナル経由で対話して使用するプログラムを作成する場合、メソッド内に特定のステートメントを保存し、ユーザーが呼び出したときにそれらを出力したい場合があります (つまり、命令を出力したり、使用可能なコマンドを出力したりします)。

于 2015-11-18T06:47:55.190 に答える