Rubyは本当に初めてで、""
vs を使用する必要がある特定の時間があるかどうかを理解しようとしてい''
ます。
タイプする方が簡単なため、ほとんどの場合、単一引用符を使用していますが、使用するかどうかはわかりません。
例get 'user/new'
対get "user/new"
Rubyは本当に初めてで、""
vs を使用する必要がある特定の時間があるかどうかを理解しようとしてい''
ます。
タイプする方が簡単なため、ほとんどの場合、単一引用符を使用していますが、使用するかどうかはわかりません。
例get 'user/new'
対get "user/new"
回答:
補間を除いて、別の違いは、「エスケープシーケンス」が単一引用符で機能しないことです
puts 'a\nb' # just print a\nb
puts "a\nb" # print a, then b at newline
'don\'t'
ます。
puts '\\'
てみてください単一のスラッシュのみを印刷します。ここを参照してくださいstackoverflow.com/questions/25499046/...
あなたの質問に答える""
には、文字列補間を行いたいときに使用する必要があります:
a = 2
puts "#{a}"
それ以外の場合は、単純な引用符を使用してください。
また、パフォーマンスの点で違いがあるかどうか疑問に思っている場合は、StackOverflowでこれについて優れた質問があります。
そして、あなたがRoRに本当に慣れていない場合は、適切なRubyの本を読んで言語の基本を学ぶことをお勧めします。それはあなたが何をしているかを理解するのに役立ちます(そしてRailsが魔法であると考えるのを防ぎます)。私は個人的にThe Well Grounded Rubyistをお勧めします。
Rubyの単一''
引用符と二重引用符に""
は、文字列に対して何が評価されるかという点で違いがあります。
最初に、文字列のリテラル形式では、一重引用符または二重引用符の間にあるものはすべて、Ruby Stringクラスのインスタンスである文字列オブジェクトとして評価されることを明確にしたいと思います。
したがって、'stackoverflow'
と"stackoverflow"
の両方がStringクラスのインスタンスを評価するまったく違いで。
文字列の2つのリテラル形式(一重引用符または二重引用符)の本質的な違いは、二重引用符ではエスケープシーケンスが許可されるのに対し、単一引用符では許可されないことです。
一重引用符で作成された文字列リテラルは、文字列の補間をサポートせず、シーケンスをエスケープしません。
きちんとした例は次のとおりです。
"\n" # will be interpreted as a new line
一方
'\n' # will display the actual escape sequence to the user
一重引用符による補間はまったく機能しません。
'#{Time.now}'
=> "\#{Time.now}" # which is not what you want..
ルビーリンターのほとんどが示唆したようあなたの文字列を単一引用符リテラルを使用し、補間/エスケープシーケンスの場合は二重のもののために行きます。
一重引用符で囲まれた文字列は、ASCIIエスケープコード(\ n、\ tなど)を処理せず、二重引用符で囲まれた文字列は文字列の補間を行いません。
エスケープコードの例:
2.4.0 :004 > puts 'Hello \n World'
Hello \n World
2.4.0 :005 > puts "Hello \n World"
Hello
World
補間の例:
2.4.0 :008 > age=27
=> 27
2.4.0 :009 > puts 'Age: #{age}'
Age: #{age}
2.4.0 :009 > puts "Age: #{age}"
Age: 27
この特定のケースでは、どのように書いても違いはありません。それらは同等です。また、Rubyのガイドやチュートリアルをさらに読むこともできます。