From: Robert Klemme Date: 2007-01-18T18:25:16+09:00 Subject: Re: Passing math method to another method? On 17.01.2007 18:21, Neutek wrote: > Cool... I think this works :-) > > > #does not work when trying to send an entire mathematical expresion as > a param > def sigma(floor, to_do, cap) > x = 0 > floor.upto(cap) {|i| > #x += i.send(to_do) > x += to_do[i] > } > return x > end > puts sigma(4, lambda{|x| x ** 2}, 20) > > Thanks a million! Basically if you think this further through, what you are trying to do is already part of Ruby's standard lib. The method is #inject. I think I used it in one of my postings. Your piece above becomes puts (4..20).inject(0) {|s,x| s + x ** 2} or, to more directly translate using #upto require 'enumerator' puts 4.to_enum(:upto, 20).inject(0) {|s,x| s + x ** 2} Cheers robert