Eva wrote: > On Thu, 2009-12-24 at 11:47 +0900, Steve Klabnik wrote: > >> 1..10 is a range, while [1..10] is an array with one element, a range from >> 1..10. You can think of 1..10 as (1..10) and [1..10] as [(1..10)] >> >> I am 95% sure that this is correct, someone please correct me if I'm wrong. >> irb seems to support this: >> >> > def one_to_ten >> >>> 1..10 >>> end >>> >> => nil >> >>> one_to_ten.class >>> >> => Range >> >>> [1..10].class >>> >> => Array >> > > > Thanks for the reply. I'm newbie to Ruby,so have another question, I > want to make a function who returns the result which can be used as: > > mytest do |a,b|c| do_something end > > How to write this mytest? > > Regards, > Eva > > The do...end is actually creating a block, which is passed into your method. There are two ways of having functions accept blocks: #Explicitly def mytest &block block.call 1, 2, 3 end #Implicitly def mytest yield 1, 2, 3 end Either way can be called like mytest do |a,b,c| do_something_with a, b, c end You will probably want to read up on methods and blocks and how the two can be used together. -Justin