From: Neutek Date: 2007-01-18T01:50:10+09:00 Subject: Re: Passing math method to another method? Wow. Thanks for the input guys. Robert, I was actually reading the summation wiki and they had a few code examples in C++/Java.. I thought I'd goof a bit and write something out in ruby. Of course, I hit the roadblock when trying to pass math operators(or methods rather) to a method... I got this far ;-) def sigma(floor, to_do, cap) end puts sigma(4, ^2, 20) I will fiddle with your suggestions and continue with my sigma :-) Thanks again for all your help Robert Klemme wrote: > On 17.01.2007 15:06, Neutek wrote: > > I'm trying to figure out how to pass methods such as: > > +, -, **, ^ > > to a method and evaluate. > > > > For example, > > > > def test(a, b, to_do) > > return a.send(to_do(b)) > > end > > > > > > puts test(1, 2, "+") #should return 3 > > puts test(3, 3, "^") #should return 0 > > puts test(3, 3, "**") #should return 27 > > > > any help would be appreciated. > > Several ways to do it > > irb(main):001:0> def test(a,b,op) a.send(op,b) end > => nil > irb(main):002:0> test 1,2,:"+" > => 3 > irb(main):003:0> def test(a,b,op) a.send(op.to_sym,b) end > => nil > irb(main):004:0> test 1,2,"+" > => 3 > irb(main):005:0> def test(a,b,op) op[a,b] end > => nil > irb(main):006:0> test 1,2,lambda {|x,y| x+y} > => 3 > > The last sample shows the more functional approach. > > What are you trying to achieve? > > Kind regards > > robert