<<-
は、次の方法/コンテキストではどういう意味ですか?<< Rubyの意味
class_eval <<-RUBY, __FILE__, __LINE__ + 1
def destroy_associations
association(:#{middle_reflection.name}).delete_all(:delete_all)
association(:#{name}).reset
super
end
RUBY
<<-
は、次の方法/コンテキストではどういう意味ですか?<< Rubyの意味
class_eval <<-RUBY, __FILE__, __LINE__ + 1
def destroy_associations
association(:#{middle_reflection.name}).delete_all(:delete_all)
association(:#{name}).reset
super
end
RUBY
ここでは、このドキュメントの最初に説明します。おそらくあなたが混乱しているのは、ここの文書が次の行から始まるということです。その行の中でその式の後に続くものはすべて、ここの文書の続きです。
クラス環境で、ここでの文書の内容を評価することを意味し、エラーが発生するたびにclass_eval heredoc, __FILE__, __LINE__ + 1
、准:したがって、ここでの内容は、文書がheredoc
として表現されていることを考えると、式は同等です現在のファイル(__FILE__
)とここの文書の最初の行(つまり、最初の行の後の行、__LINE__ + 1
)は1行目と見なす必要があります。
"heredoc"または複数行の文字列です。 <<-RUBY
が開始し、RUBY
自体が終了です。
http://blog.jayfields.com/2006/12/ruby-multiline-strings-here-doc-or.html
また、「ヒアドキュメント」として知られている複数行の文字列の始まりを知らせます。
フォーマットのいずれかであり得る:
<<[ID]
contents
[ID]
又は
<<-[ID]
contents
[ID]
最初のケースでは、閉鎖[ID]は、行の先頭に配置されなければならないことである差、一方2番目のケースでは、[ID]をインデントしてよりクリーンなコードにすることができます。
これはおそらく、任意の文字または数字heredoc: 'puts << -_ END_';' stuff'; '_END_'また、中括弧を使ってheredocsで文字列補間を行うこともできます:' x = "string" ';' puts << - -END ';'#{x } ';' -END-' – 13aal