开发者

Ruby Get Array From Objects Returned in a Block

In Ruby, on certain occasions (ruby/gosu/texplay) I'v seen code like the following used:

image.paint {
    circle 20, 20
    pixel 10, 10
}

Would it be possible for me to write a similar function that can be used like so?:

my_function {
    "one"
    "two"
    "three"
}

that would return and array: ["one", "two", "three"]

p.s. this 开发者_如何学Pythonfunction isn't just for generating arrays and I am not wondering about methods to do so, all I need to know about is the syntax. Thanks in advance, ell.


TexPlay looks nice, how do you find it? :)

I can't think of a way to do what you want, sorry. But if you prefix every string with _ it is easy:

function {
    _"one"
    _"two"
    _"three"
}

#=> ["one", "two", "three"]

Where:

def function(&block)
    Object.new.tap do |s| 
        s.instance_eval do            
            def _(var)
                @val ||= []
                @val << var
            end
        end
        s.instance_eval(&block)
     end.instance_variable_get(:@val)
end    
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜