Rubyの%q / %Qクォートメソッドのユースケースは何ですか?
質問
ThomasのProgramming Ruby 1.9を読んでいて、シングルクォートとダブルクォートの代替区切りメソッドに出会いました(
%q / %Q
). 他の Ruby 言語のリファレンスでも、このメソッドについて知っていました。
%q/I'm acting like a single-quoted string/
%Q|"I'm acting like a double-quoted string" --Anonymous|
私はRubyを長く使っているわけではありませんが、Rubyを使った 決して この引用方法は生産コードで遭遇したことはありません。
の明らかな機能以外に 内部で引用符をエスケープするのを避ける をバックスラッシュで回避できること以外に、通常のシングルクォートまたはダブルクォートよりもこの方法でクォートする一般的な使用例は何ですか? 一般的に、1行または複数行の文字列で使用されるのでしょうか?複数行の文字列で使用される場合、HEREDOC 文字列よりも好まれることがありますか?この方法がよく使われる特定のRubyイディオムはありますか?
どのように解決するのですか?
JavaScriptを含むHTMLをエスケープする際に、すでにクォートメソッドを使い果たした場合に非常に便利です。
link = %q[<a href="javascript:method('call')">link</a>]
また、複数行の SQL 文を扱うときにも非常に便利であることがわかりました。
execute(%Q[
INSERT INTO table_a (column_a)
SELECT value
FROM table_b
WHERE key='value'
])
この利点は、クエリで使用する引用符の種類に注意を払う必要がないことです。シングルでもダブルでも、またその両方でも動作します。また、HEREDOCスタイルの方法よりもずっと手間がかかりません。
Ruby には、このような便利なメソッドが他にもあります。
%r
などがあり、正規表現を構築することができます。のようなものを扱うものを書こうとしたときに、スラッシュ炎を回避することができます。
http://
のようにエスケープしなければならないようなものを扱うものを書こうとしたときに、スラッシュ炎を避けることができます。
関連
-
[解決済み] Rubyのダブルコロン `::` とは何ですか?
-
[解決済み] 文字列リテラルの前にある'b'文字は何を意味するのでしょうか?
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] gemのインストールで --no-ri --no-rdoc をデフォルトにするには?
-
[解決済み] YAMLです。YAML の文字列には引用符が必要ですか?
-
[解決済み] Rubyのattr_accessor, attr_reader, attr_writerを使う理由は?
-
[解決済み] bundler vs RVM vs gems vs RubyGems vs gemsets vs system ruby [closed].
-
[解決済み] Ruby で改行せずに印刷する方法
-
[解決済み] Rubyでオブジェクトのキーを配列として取得する
-
[解決済み] FactoryGirlのbuildメソッドとcreateメソッドの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Rubyの継承とミキシンの比較
-
[解決済み] Hash each ループでインデックスにアクセスすることは可能ですか?
-
[解決済み] Rubyオプションのパラメータ
-
[解決済み] 最大値のハッシュのキーはどのように見つけるのですか?
-
[解決済み] Rubyで本当に安いコマンドラインオプションのパース
-
[解決済み] Herokuの基本的なアプリのロードに2秒かかるのはなぜですか?
-
[解決済み] ランダムなブール値を返す最良の方法
-
[解決済み] Rubyでオブジェクトのキーを配列として取得する
-
[解決済み] OSX 10.9 MaverickにNokogiriをインストールするとエラーになる?
-
[解決済み] raise "foo"`と`raise Exception.new("foo")` の違いは何ですか?