From: Matthew Kerwin Date: 2012-07-11T10:40:07+09:00 Subject: Re: Lambdaification of Method Calls My only request would be that you rename the method something like 'create_lambda' (since you're not really casting s as such, you're using it as a factory) or get_lambda (if you want to make the lambda seem like a property of s). Aside from that, I can see it being a rather fun way to blow my feet off and confuse my colleagues, which are always my primary goals at work. (Spice of life, and all that.) On 10 July 2012 01:05, Robert Klemme wrote: > 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(:<<, "") > => # > irb(main):016:0> l.call > => "foo" > irb(main):017:0> s > => "foo" > irb(main):018:0> l[] > => "foo" > irb(main):019:0> s > => "foo" > > irb(main):038:0> s = "foo" > => "foo" > irb(main):039:0> l = s.to_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/ > -- Matthew Kerwin, B.Sc (CompSci) (Hons) http://matthew.kerwin.net.au/ ABN: 59-013-727-651 "You'll never find a programming language that frees you from the burden of clarifying your ideas." - xkcd