代码之家  ›  专栏  ›  技术社区  ›  Ell

Ruby从块中返回的对象获取数组

  •  1
  • Ell  · 技术社区  · 15 年前

    在Ruby中,在某些情况下(ruby/gosu/texplay),我看到的代码如下:

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

    我可以写一个类似的函数吗?:

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

    返回并数组: [一、二、三]

    另外,这个函数不仅仅用于生成数组,我不想知道如何生成数组,我只需要知道语法。提前谢谢,嗯。

    1 回复  |  直到 15 年前
        1
  •  3
  •   horseyguy    15 年前

    TexPlay 看起来不错,你怎么找到的?:)

    对不起,我想不出一个办法来做你想做的事。但是如果你在每个字符串前加上前缀 _ 这很容易:

    function {
        _"one"
        _"two"
        _"three"
    }
    
    #=> ["one", "two", "three"]
    

    在哪里?

    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