Robert Klemme wrote:
** SPOILER **
Don't read on if you first want to experiment yourself.
> 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...
What is the "summation wiki"? Are you referring to this page?
Sum - Wikipedia
If yes, here are some more ways:
# plain values
sum = (m..n).inject(0){|s,x| s + x}
# with a function
f = lambda {|i| i * 2}
sum = (m..n).inject(0){|s,x| s + f}
# in a method
def sum(m, n, f)
(m..n).inject(0){|s,x| s + f}
end
s = sum( 1, 2, lambda {|x| x * 2} )
etc.
Advantage of using lambdas is that they are more flexible than method
names and can contain arbitrary calculations.
Kind regards
robert
PS: Please don't top post.
What's top post? (sorry, I'm new to google groups --I put my reply at
the bottom if this is what you meant )
I'll read through your example now but figured what I worked on in the
interim was worth posting..
#works
def test(a, to_do, b)
return a.send(to_do, b)
end
puts test(2, :**, 3)
#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)
}
return x
end
puts sigma(4, :**2, 20)
#does not work.. but another example of what I would expect 
def do_it(n, to_do)
return n.send(to_do)
end
puts sigma(3, :+4/2) #should yield 5
(Thank you)²
···
On 17.01.2007 17:48, Neutek wrote: