【问题标题】:Ruby Get Array From Objects Returned in a BlockRuby 从块中返回的对象中获取数组
【发布时间】:2010-10-04 22:04:42
【问题描述】:

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

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

我能不能写一个可以这样使用的类似函数?:

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

这将返回和数组: [“一”、“二”、“三”]

附言这个函数不只是用于生成数组,我并不想知道这样做的方法,我需要知道的只是语法。在此先感谢,呃。

【问题讨论】:

    标签: ruby arrays methods block


    【解决方案1】:

    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    
    

    【讨论】:

    • 我在 Gosu 论坛中找到了它 :) 我使用 Gosu 因为它是我能找到的最简单的 Ruby 二维库!感谢这个例子,它很精彩,告诉我我需要知道什么。再次感谢
    猜你喜欢
    • 2016-11-18
    • 1970-01-01
    • 2017-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-07
    相关资源
    最近更新 更多