Difference between For and Map in Ruby -
please let me know difference between these operations. first code works ok:
1) elem in(mr) elem.shedule = date.new(date.year, date.month, date.day) end
but use map
:
2) mr.map!{ |elem| elem.shedule = date.new(date.year, date.month, date.day) }
and second code returns error:
nomethoderror in events#index showing c:/sites/calend/app/views/events/_calendar.html.erb line #9 raised: undefined method `shedule' thu, 04 apr 2013:date extracted source (around line #9): 6: </h2> 7: <%= calendar_for(@repeats, :year => @date.year, :month => @date.month) |calendar| %> 8: <%= calendar.head('sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday') %> 9: <%= calendar.day(:day_method => :shedule) |date, events| %> 10: <%= date.day %> <%= link_to '+', new_event_path(date: date) %> 11: <ul> 12: <% event in events %>
you using map
in wrong way, should use each
instead. code should be:
mr.each |elem| elem.shedule = date.new(date.year, date.month, date.day) end
map
replaces each element in array value returned block (see linuxios comment below), in example block returns date object. map!
performs same operation in place without creating new array, in example mr
array of date objects , not of events.
moreover use of for
quite uncommon in ruby code, replaced each
since:
[1, 2, 3].each |x| puts x end
is equivalent (see mladen jablanović comment answer differences) :
for x in [1, 2, 3] puts x end
and former considered more "rubyish".
Comments
Post a Comment