From: "Rubén Medellín" Date: 2009-01-29T01:42:47+09:00 Subject: Re: function inside a function In ruby, function_a is a method call (with no arguments), and as a call, it gets evaluated to whatever that function returns. If you wanted to grab the function as a "pure function", you'd use lambdas or Procs like Jesús pointed. In other words: function_a = Proc.new {|x| ..do something with x... } returns a functional object. You can then call the method with function_a.call (aliased []) see http://www.ruby-doc.org/core/classes/Proc.html for details on Proc objects Greetings On Jan 28, 9:49 am, Jason Lillywhite wrote: > I have a question about the timing of function evaluations in this case: > > def function_a(x = 1) >   x**2 + x > end > > def function_b(any_function) >   y = 4 + 5 #this would actually be more complex >   function_a(y) > end > > puts function_b(function_a) > > I found that function_a(x = 1) is evaluated first, then > function_b(function_a). I found that 'def function_a(x = nil) returns an > error. Why does function_a need to be evaluated before it is called as > an argument in function_b? > > PS - the reason I am writing things this way is to make function_b > accept any function (within reason). > -- > Posted viahttp://www.ruby-forum.com/.