How to square each element of an array in Array class in Ruby?
Part of my code is as follows: class Array def square! self.map {|num| num ** 2} self end end When I call: [1,2,3].square! I expect to get [1,4,9], but instead I get [1,2,3]. Why is this the case? When I call: [1,2,3].map {|num| num ** 2} outside of the class method, I get the correct answer. You have to use Array#map! , not Array#map . Array#map -> Invokes the given block once for each element of self.Creates a new array containing the values returned by the block. Array#map! -> Invokes the given block once for each element of self, replacing the element with the value returned by the block.