我有一個heredoc,我正在使用#{}
來插入其他字符串,但有一個實例,我也想在我的heredoc中寫入實際文本#{some_ruby_stuff}
,而不插入它。有沒有辦法逃避#{。我如何逃避#{從字符串插值
我試過「\」,但沒有運氣。雖然逃脫#{}
,還包括「\」:
>> <<-END
#{RAILS_ENV} \#{RAILS_ENV}
END
=> " development \#{RAILS_ENV}\n"
我有一個heredoc,我正在使用#{}
來插入其他字符串,但有一個實例,我也想在我的heredoc中寫入實際文本#{some_ruby_stuff}
,而不插入它。有沒有辦法逃避#{。我如何逃避#{從字符串插值
我試過「\」,但沒有運氣。雖然逃脫#{}
,還包括「\」:
>> <<-END
#{RAILS_ENV} \#{RAILS_ENV}
END
=> " development \#{RAILS_ENV}\n"
我認爲反斜槓散列只是Ruby在一些irb唯一的方式有幫助。
>> a,b = 1,2 #=> [1, 2]
>> s = "#{a} \#{b}" #=> "1 \#{b}"
>> puts s #=> 1 #{b}
>> s.size #=> 6
所以我認爲你已經有了正確的答案。
您可以使用'
引號代替。其中包含的任何內容都不會被插入。
您的解決方案與轉義#
也適用於我。事實上,Ruby解釋器顯示
=> "\#{anything}"
但
> puts "\#{anything}"
#{anything}
=> nil
你的字符串包含你想要什麼,只p
法轉義字符顯示它。實際上,p
方法告訴你,應該如何寫入字符串來獲取由其參數表示的確切對象。
對於heredoc而言,您無需手動轉義所有可能的插值,您可以使用單引號樣式heredoc。它的工作原理是這樣的:
item = <<-'END'
#{code} stuff
whatever i want to say #{here}
END
這真的是正確的答案,至少在我的情況下。 – Rob 2013-09-18 16:18:29
你說得對。 irb正在「有幫助」。 Thx – Nick 2009-08-21 10:00:09