3

Ruby_Newbie Guide to Symbols から:

著者は、attr_writer メソッドの単純化された実装を示そうとしています。

#!/usr/bin/env ruby

def make_me_a_setter(thename)
    eval <<-SETTERDONE         # <----- Here
    def #{thename}(myarg)
        @#{thename} = myarg
    end
    SETTERDONE
end

class Example
    make_me_a_setter :symboll
    make_me_a_setter "stringg"

    def show_symboll
        puts @symboll
    end

    def show_stringg
        puts @stringg
    end
end

example = Example.new
example.symboll("ITS A SYMBOL")
example.stringg("ITS A STRING")
example.show_symboll
example.show_stringg
4

2 に答える 2

12

ヒアドキュメントです。「ヒアドキュメント」ドキュメントから:

大きなテキスト ブロックを書いている場合は、「ヒア ドキュメント」または「ヒアドキュメント」を使用できます。

expected_result = <<HEREDOC
This would contain specially formatted text.

That might span many lines
HEREDOC

ヒアドキュメントは<<HEREDOC次の行から始まり、 で始まる次の行で終わりますHEREDOC。結果には、末尾の改行が含まれます。

于 2013-10-16T21:18:55.860 に答える
2

複数行の文字列です。このコードは、文字列内に埋め込まれたコードを評価します。複数行の文字列の詳細:

http://blog.jayfields.com/2006/12/ruby-multiline-strings-here-doc-or.html

PS eval の使用は推奨されません。代わりに、yield、instance_eval、class_eval を使用します。

于 2013-10-16T21:17:30.193 に答える