文字列またはRuby 2.3のfrozen-string-literal: true
プラグマでRuby 2.2のfrozen
メソッドを使用すると、関連するフリーズした文字列リテラルは、プログラム実行中に一度だけ評価されます。文字列が補間を持たない。フリーズした文字列を評価する
#frozen-string-literal: true
5.times{p "#{}".object_id}
出力(別のオブジェクトを補間
70108065381260
70108065381260
70108065381260
70108065381260
70108065381260
:
#frozen-string-literal: true
5.times{p "".object_id}
出力(同じオブジェクトID)を補間していない
次はこれを説明すると思われます私DS):このプロパティは、(すなわち、一度だけ評価されている)何を
70108066220720
70108066220600
70108066220420
70108066220300
70108066220180
- と呼ばれているのですか?それは不変性とは異なるはずです。
- 文字列がこのようなプロパティを正しく持つようになる条件を理解していますか?これに言及している公式文書はどこにありますか?
- 補間された文字列を1回だけ評価する方法はありますか?
あなたの回答は正しいようです。Rubyの動作(あなたの答えではない)が私を混乱させています。 "通訳者は#{'foo'}'を決めることができますが、 '#{} 'は決めることができませんか?後者はもっと簡単です。 – sawa
@sawaはまだ分かりませんが、コードを調べます。私の推測では、誰もそれを使用しないので、単に "#{}"のケースを扱わなかったでしょう。 – ndn
私はあなたの答えが好きですが、あなたや他の人が2に完全な答えを出すのを少し待っています。 – sawa