2012-03-31 8 views
6

私はRubyの一重引用符と二重引用符の機能的な違いを理解していますが、私はこれら2つの間でどのような違いがあるのか​​具体的な理由を考えています。私の考えでは、二重引用符を使うだけで、それについて考えるのではないようです。二重引用符が必要とされない限り、私は、トピックを研究中で読んだRuby/Railsの文字列を囲む一重引用符を使用する利点はありますか?

カップルの根拠...

  1. は、単一引用符を使用してください。

  2. シングルクォーテーションには、パフォーマンス上のメリットがごくわずかです。

他の興味深い考えはありますか? (それとも、これは何かを誰も右ウェイのためにドアを開いたままに自由やRubyの場合です...)その他の場合には

+0

一重引用符が高速であるかどうかを調べる質問があると思います。 –

+1

[ここ](http://stackoverflow.com/questions/6395288/ruby-double-vs-single-quotes)他にもたくさんの質問があります。文字列補間が大きな理由です。ジョルグはここでも良い返事をしてくれました。 – Jonathan

答えて

10

は、私は通常、次のルールに従ってくださいエラーやセキュリティ上のバグを追跡しようとしているときに、文字列の先頭を見てすぐにその中にコードが存在しないとすぐに知ることができます。

しかし、私はまた、ルールに次の例外は、次のとおりです。彼らは、コードをより読みやすくする場合

利用、二重引用符を

すなわち、私は、単一引用符で囲まれた文字列は、二重引用符で囲まれた文字列よりも解析するために無限に高速であることを技術的に真である

"It's time" 

'It\'s time' 
%q{It's time} 

上好むが、

  • は、プログラムがのみ解析されますので、それは無関係です一度、起動時には、ランタイムのパフォーマンスに違いはありません
  • パフォーマンスの違いは実際に文字列を解析するために取ら
  • 時間だからRubyのスゴ構文

の一部を解析するのに要する時間に比べて無関係である非常に小さい、あなたの質問への答えは次のとおりです。はい、ありますつまり、文字列にコードが含まれているかどうかをすぐに確認できるという利点があります。

0
1.9.2-p290 :004 > x = 3 
=> 3 
1.9.2-p290 :005 > "#{x}" 
=> "3" 
1.9.2-p290 :006 > '#{x}' 
=> "\#{x}" 

、それが入力する方が簡単ですので、私は、単一引用符を好みます私の目にはあまりオーバーフローしないようにしています。

+1

"一重引用符で囲まれた文字列の行に沿った単一の文章は補完されません"または何かがこの答えを出すでしょう。コードは事実をよく説明していますが、ここで何が起こっているのか理解できていない人もいます。 (もしかして、彼らがコメントを読んでいれば今でもやっています:) – cHao

+3

OPは2つの機能的な違いを知っていましたが、彼は明確に述べています – Castilho

+0

これはどちらでも同じことを話しています:) – Spyros

1

二重引用符では文字列補間が許可され、一重引用符で囲まれた文字列はそうではないので、一重引用符で囲まれた文字列を使用する方が高速です。

これは私が知っている唯一の違いです。そのため、それはあなたが、文字列の補間を必要としない限り、単一引用符で囲まれた文字列を使用するのが最善です:

num = 59 
"I ate #{num} pineapples"` 
1

まあ、単一引用符で囲まれた文字列対の二重引用符で囲まれた文字列の「パフォーマンスの向上」についてのファズがたくさんあります。

実際には、補間しなければ実際には問題にならないということです。 Web上には、その主張を裏付ける多くのベンチマークがあります。 (Some here at stackoverflow

個人的には、読みやすさのために補間を行っている文字列に対しては、私は個人的にはdoubleを使用します。私はそれらが必要なときに二重引用符を見ることを好む。しかし、実際にはそれらを「二重引用」以外の文字列を補間するためのRubyでの方法があります。

%q{#{this} doesn't get interpolated} 

%Q{#{this} is interpolated} 
4

私は単一引用符で囲まれた文字列を使用するには、3つの理由を考えることができます。

  1. 彼らはきれいに見える(理由
  2. エスケープする必要がある文字列を簡単に作成できます('he said "yes"'"he said \"yes\""
  3. これらは少し性能が優れています。あなたは

    を補間していない場合はその理由があればということである

    決して使用、二重引用符(または%Qまたは%W):

0

私はこの非公式のRuby Style Guideを見つけたので、これに対処し、私の頭の中で浮遊していた多くのスタイリングの質問に答えました。私はそれをチェックアウトすることを強くお勧めします。

関連する問題