1. ホーム
  2. スクリプト・コラム
  3. ルビートピックス

Rubyでパーセント記号とリテラル値を使用する例

2022-02-03 11:59:03

    二重引用符で囲まれた一行文字列は、%() (%Q の省略形) を使って補間します。複数行の文字列には、ヒアドキュメントが好まれます。

  # bad (no interpolation needed)
  %(<div class="text">Some text</div>)
  # should be '<div class="text">Some text</div>'

  # bad (no double-quotes)
  %(This is #{quality} style)
  # should be "This is #{quality} style"

  # bad (multiple lines)
  %(<div>\n<span class="big">#{exclamation}</span>\n</div>)
  # should be a heredoc.

  # good (requires interpolation, has quotes, single line)
  %(<tr><td class="name">#{name}</td>)



    ' と " を含まない文字列には %q を使用しないでください。多くの文字をエスケープする必要がない限り、プレーンな文字列の方が読みやすいでしょう。

  # bad
  name = %q(Bruce Wayne)
  time = %q(8 o'clock)
  question = %q("What did you say? ")

  # good
  name = 'Bruce Wayne'
  time = "8 o'clock"
  question = '"What did you say?"'



    r のアプローチは、複数の / 記号を含む正規表現の定義にのみ適しています。

  # bad
  %r(\s+)

  # still bad
  %r(^/(. *)$)
  # should be /^\/(. *)$/

  # good
  %r(^/blog/2011/(. *)$)



    呼び出されるコマンドがバッククォートを使用しない限り、%x を使用しないでください (これはまれです)。

  # bad
  date = %x(date)

  # good
  date = `date`
  echo = %x(echo `date`)



    sは使わないでください。コミュニティでは、空白を含むシンボルを作成するために :"some string" を使用することを好んでいます。

    rを除き、リテラルな量に%を使用する場合は()を使用する。中括弧は多くのシナリオで正規表現によく見られるので、正規表現の内容によっては { のような汎用性の低い文字の方がセパレータとして良い場合があります。

  # bad
  %w[one two three]
  %q{"Test's king!", John said.}

  # good
  %w(one two three)
  %q("Test's king!", John said.)