Hi,
does anybody think this is a good idea to have in stdlib or even core?
class Object
def to_lambda(method, *a)
lambda {|*b| send(method, *a, *b)}
end
end
With that we can do
irb(main):015:0> l = s.to_lambda(:<<, "<X>")
=> #<Proc:0x802c4298@(irb):12 (lambda)>
irb(main):016:0> l.call
=> "foo<X>"
irb(main):017:0> s
=> "foo<X>"
irb(main):018:0> l[]
=> "foo<X><X>"
irb(main):019:0> s
=> "foo<X><X>"
irb(main):038:0> s = "foo"
=> "foo"
irb(main):039:0> l = s.to_lambda '+'
=> #<Proc:0x801e8d60@(irb):22 (lambda)>
irb(main):040:0> l["end"]
=> "fooend"
irb(main):041:0> s
=> "foo"
It would be a convenient way to bundle a method call with arguments
for later execution (e.g. through a thread pool). You then just do
queue.enq my_object.to_lambda(:calculate, "foo", 123)
and be done. Another convenient name for the method would be "later".
So we get
queue.enq my_object.later(:calculate, "foo", 123)
We could drive that even further and do
class Proc # or maybe class Object?
def in(queue)
queue << self
end
end
No we can do
my_object.later(:calculate, "foo", 123).in queue
Thoughts?
Kind regards
robert
--
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/
-- You received this message because you are subscribed to the Google Groups
ruby-talk-google group. To post to this group, send email to
[email protected]. To unsubscribe from this group, send email
to [email protected]. For more options, visit this
group at https://groups.google.com/d/forum/ruby-talk-google?hl=en