ruby - using each and map to modify a range of an array indices -
the following code:
a = [1,2,3,4,5] b = a.each.map {|i| = 0} # or b = a.map {|i| = 0} same thing
makes b = [0, 0, 0, 0, 0] expected
is there equally succinct way change range of a? (ex: set a[2..4] 0)
i have messed around in irb, code returns elements modified
a = [1,2,3,4,5] b = a[2..4].each.map {|i| = 0}
makes b = [0, 0, 0], trying make b = [1, 2, 0, 0, 0]
i'm not sure trying here.
first: why turning array
enumerator
, map
enumerator
instead of mapping array
directly? i.e. why have
b = a.each.map {|i| = 0 }
instead of
b = a.map {|i| = 0 }
also, why assigning block local variable i
never using variable? i.e. why don't
b = a.map {|i| 0 }
of course, aren't using i
at all ...
b = a.map { 0 }
however, since values of b
have absolutely no relationship @ values of a
, might
b = [0] * a.size
the same questions apply second code example. again, ignore elements of a
, using map
makes no sense whatsoever. can
(b = a.dup)[2..4] = [0] * 3
or more readable broken 2 expressions
b = a.dup b[2..4] = [0] * 3 # or ... = [0, 0, 0]
Comments
Post a Comment