Reputation: 4358
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 function 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.
Upvotes: 1
Views: 222
Reputation: 29905
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
Upvotes: 3