What is the difference between a.map! and a.map?

Hi,

I am confused with the working of a.map and a.map! on the array
collection.

irb(main):001:0> a = [1,2,3,4]
=> [1, 2, 3, 4]
irb(main):002:0> a.map {|n| n+1}
=> [2, 3, 4, 5]
irb(main):003:0> puts a.inspect
[1, 2, 3, 4]
=> nil
irb(main):004:0> a.map! {|n| n+1}
=> [2, 3, 4, 5]
irb(main):005:0> puts a.inspect
[2, 3, 4, 5]
=> nil
irb(main):006:0>

Subject: what is the difference between a.map and a.map?
Date: Sat 12 Jan 13 04:54:43PM +0900

Quoting Arup R. ([email protected]):

I am confused with the working of a.map and a.map! on the array
collection.

The documentation is quite clear:

$ ri Array#map


Invokes the given block once for each element of self.

Creates a new array containing the values returned by the block.


$ ri Array#map!


Invokes the given block once for each element of self, replacing the
element
with the value returned by the block.

Methods ending with ! usually modify the original object.

Carlo

You’ll find this symbol on quite a few methods in Ruby, in general there
will only be a method with “!” (modify the object in place) if there’s
also one which returns a new object without changing the original. Look
up “Ruby Bang Methods” for more info.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs