簡體   English   中英

Ruby從塊中返回的對象獲取數組

[英]Ruby Get Array From Objects Returned in a Block

在Ruby中,在某些情況下(ruby / gosu / texplay),我看到了類似以下代碼的代碼:

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

我是否可以編寫一個可以像這樣使用的類似函數?

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

將返回並排列的數組:[“一個”,“兩個”,“三個”]

ps該函數不僅用於生成數組,而且我不懷疑這樣做的方法,我只需要了解語法。 預先感謝,ell。

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    

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM