Ruby 初心者スレッド Part 23at TECHRuby 初心者スレッド Part 23 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト154:デフォルトの名無しさん 08/12/02 22:41:36 そこで2重にする意味が分からんけどこういうこと? eval(<<EOS) def hello(person) "Hello, \#{person}!" end EOS 155:デフォルトの名無しさん 08/12/02 22:45:27 >>153 そもそも2重evalで何がやりたいのかを詳しく そのサンプルコードでは、意図がよく分からない 156:デフォルトの名無しさん 08/12/02 23:03:12 それはさすがに見たままなんじゃね def hello(person) return eval("Hello, #{person}") end という。eval文の入ったメソッド定義そのものをeval文で書きたいのだろ 157:デフォルトの名無しさん 08/12/02 23:05:29 EOSは何もくくらないと、"EOS"と同じ扱いになる つまり文字列全体をダブルクオートでくくったのと同じ状態になるので、展開が起きる 外側のevalに渡された文字列を評価する時点で#{person}が展開されちゃって、変なことになってる 展開を抑制するのが楽な回避法。'EOS'とすべし helloメソッドは文字列を返したいのかもしれないけど、 それだと内側のevalにも括弧が足りない eval <<'EOS' def hello(person) eval %q[ "Hello, #{person}!" ] end EOS print hello("Ruby") # => Hello, Ruby! 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch