Ruby undefined variable in method body -
when run this, error stating city undefined. should do?
 def ticket_format    text = ""   tickets.each |price, artist|     if city == "chicago"       text += "#{artist} show cost #{price}"     else       text += "you paid #{price} see #{artist}"      end   end   text end      
the way city used, means it's whether local variable, i.e defined in function body, or method defined on same context ticket_format defined.
unlike procs , lambdas (or blocks in generale), methods in ruby not closures, i.e not keep context defined. if define city variable before method
  city = 'a ctiy'   def ticket_format       city == 'a city'      ...   end    # raise error 'undefined local variable or method "city"'   ticket_format   so whether pass city argument, or define method city on same class ticket_format defined
 def city    @city   end   def ticket_format     if city == 'a city'     ...  end    or
 def ticket_format city     if city == 'a city'     ...  end       
Comments
Post a Comment