13

他の文字列を補間するために使用しているヒアドキュメントがありますが、補間せずに実際のテキストをヒアドキュメントに#{}書きたい場合があります。#{some_ruby_stuff}#{ をエスケープする方法はありますか?

「\」を試してみましたが、うまくいきません。をエスケープしてい#{}ますが、「\」も含まれています。

>> <<-END
 #{RAILS_ENV} \#{RAILS_ENV} 
END
=> " development \#{RAILS_ENV}\n"
4

3 に答える 3

20

潜在的な補間をすべて手動でエスケープする必要のないヒアドキュメントの場合、一重引用符スタイルのヒアドキュメントを使用できます。それはこのように動作します:

item = <<-'END'
  #{code} stuff
  whatever i want to say #{here}
END
于 2009-08-22T06:43:42.693 に答える
19

バックスラッシュハッシュは、Rubyがirbのみの方法で役立つだけだと思います。

>> a,b = 1,2        #=> [1, 2]
>> s = "#{a} \#{b}" #=> "1 \#{b}"
>> puts s           #=> 1 #{b}
>> s.size           #=> 6

ですから、あなたはすでに正しい答えを持っていると思います。

于 2009-08-21T08:42:56.260 に答える
4

'代わりに引用符を使用できます。それらに囲まれているものは補間されていません。

エスケープによるあなたの解決策#も私にとってはうまくいきます。確かにRubyインタープリターショー

=> "\#{anything}"

しかし

> puts "\#{anything}"
#{anything}
=> nil

文字列には必要なものが正確に含まれていますp。メソッドのみがエスケープ文字で表示されます。実際、pメソッドは、パラメーターによって正確に表されるオブジェクトを取得するために文字列を書き込む方法を示しています。

于 2009-08-21T08:29:40.887 に答える