Hello, Is there a way to bind only certain parameters with curry()? Consider this example: function myFunction(event, callback) { // ... } myElement.observe(''click'', myFunction.curry(myCallback)); Basically, I''m trying to "preconfigure" myFunction with myCallback and yet still have the event object available when myFunction is actually executed. The above snippet doesn''t do what I want because the event parameter inside myFunction is myCallback instead of the actual click event object. Looking at myFunction.curry(myCallback) declaration it does seem logical that event is bound to myCallback, however, is there a way to bind only certain parameters without having to start with the first one? Regards, Rytis --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Spinoffs" group. To post to this group, send email to rubyonrails-spinoffs-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-spinoffs-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-spinoffs?hl=en -~----------~----~----~----~------~----~------~--~---
Function#curry does left-to-right currying only. You would either need to wrap handler in another function or use what is sometimes called rcurry [1] (a.k.a right curring): myElement.observe(''click'', function(e) { myFunction(e, myCallback); }) [1] http://dev.rubyonrails.org/ticket/9034 - kangax On May 5, 6:01 am, Rytis Daugirdas <rytis.daugir...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Hello, > > Is there a way to bind only certain parameters with curry()? Consider > this example: > > function myFunction(event, callback) > { > // ... > > } > > myElement.observe(''click'', myFunction.curry(myCallback)); > > Basically, I''m trying to "preconfigure" myFunction with myCallback and > yet still have the event object available when myFunction is actually > executed. The above snippet doesn''t do what I want because the event > parameter inside myFunction is myCallback instead of the actual click > event object. Looking at myFunction.curry(myCallback) declaration it > does seem logical that event is bound to myCallback, however, is there > a way to bind only certain parameters without having to start with the > first one? > > Regards, > Rytis--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Spinoffs" group. To post to this group, send email to rubyonrails-spinoffs-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-spinoffs-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-spinoffs?hl=en -~----------~----~----~----~------~----~------~--~---
Hey Rytis, Curry takes the prebound arguments and pushes them onto the argument chain first, when the callback is executed the additional parameters, such as your event object are appended. Your event object is there, its just the parameters are switched, the event object should be present as the second parameter and your callback will be the first. Try using a console.log command inside your listener method for arguments to identify how the chain is truly being received. function(){ console.log("inside listener %o", arguments); } On May 5, 8:12 am, kangax <kan...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Function#curry does left-to-right currying only. You would either need > to wrap handler in another function or use what is sometimes called > rcurry [1] (a.k.a right curring): > > myElement.observe(''click'', function(e) { > myFunction(e, myCallback); > > }) > > [1]http://dev.rubyonrails.org/ticket/9034 > > - kangax > > On May 5, 6:01 am, Rytis Daugirdas <rytis.daugir...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > Hello, > > > Is there a way to bind only certain parameters with curry()? Consider > > this example: > > > function myFunction(event, callback) > > { > > // ... > > > } > > > myElement.observe(''click'', myFunction.curry(myCallback)); > > > Basically, I''m trying to "preconfigure" myFunction with myCallback and > > yet still have the event object available when myFunction is actually > > executed. The above snippet doesn''t do what I want because the event > > parameter inside myFunction is myCallback instead of the actual click > > event object. Looking at myFunction.curry(myCallback) declaration it > > does seem logical that event is bound to myCallback, however, is there > > a way to bind only certain parameters without having to start with the > > first one? > > > Regards, > > Rytis--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Spinoffs" group. To post to this group, send email to rubyonrails-spinoffs-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-spinoffs-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-spinoffs?hl=en -~----------~----~----~----~------~----~------~--~---