سؤال

في روبي ، في مناسبات معينة (Ruby/Gosu/Texplay) رأيت رمزًا مثل ما يلي:

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

هل سيكون من الممكن بالنسبة لي أن أكتب وظيفة مماثلة يمكن استخدامها مثل ذلك؟:

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

من شأنه أن يعود ومصفوفة: ["واحد" ، "اثنان" ، "ثلاثة"

ملاحظة: هذه الوظيفة ليست فقط لتوليد المصفوفات ولا أتساءل عن طرق للقيام بذلك ، كل ما أحتاج إلى معرفته هو بناء الجملة. شكرا مقدما ، 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 مع الإسناد
لا تنتمي إلى StackOverflow
scroll top