From: pharrington Date: 2009-12-25T02:50:06+09:00 Subject: Re: "No block given" error -- spurious? On Dec 24, 12:08 pm, "Richard Lionheart" wrote: > The code below, found athttp://github.com/eregon/RPCFN4/blob/master/solutions/benoit_daloze.rb(with > the last two lines added for testing it) produced the error: > Polynomials.rb:15:in `each_with_index': no block given (LocalJumpError) > The erronious line is flagged with #================= > Debugging indicates that @ceof is an Array. > What's up? > > # Benoit Daloze > # Ruby Programming Challenge For Newbies #4 > # pretty-print polynomials > # > # My solution use Enumerable#inject to build the String, > # with every "monomial" splitted in 3 parts : sign, coefficient and variable > class Polynomial >   def initialize(coef) >     raise ArgumentError, "Need at least 2 coefficients" if coef.size < 2 >     @coef = coef >   end > >   def to_s >     return '0' if @coef.all? { |c| c == 0 } >     @coef.each_with_index.inject("") { |s, (coef, i)|   # > <=================================== >       pow = @coef.length-1-i >       if coef == 0 >  s >       else >  s + >  (coef > 0 ? '+' : '-') + # sign >  (coef.abs == 1 && pow != 0 ? '' : coef.abs.to_s) + # coef >  (pow < 2 ? 'x'*pow : "x^#{pow}") # var >       end >     }.sub(/^\+/, "") >   end > end > >  p = Polynomial.new( [1, 2] ) >  puts p > > --- news://freenews.netfront.net/ - complaints: n...@netfront.net --- This should work with Ruby 1.9, as each_with_index returns an Enumerator when called without a block. Ruby 1.8's each_with_index, however, requires a block to be passed to it.