Một phần của mã của tôi là như sau:Làm thế nào để vuông mỗi phần tử của một mảng trong lớp Array trong Ruby?
class Array
def square!
self.map {|num| num ** 2}
self
end
end
Khi tôi gọi:
[1,2,3].square!
tôi mong muốn nhận được [1,4,9], nhưng thay vào đó tôi nhận được [1,2,3 ]. Tại sao điều này là trường hợp? Khi tôi gọi:
[1,2,3].map {|num| num ** 2}
ngoài phương pháp lớp học, tôi nhận được câu trả lời đúng.
Bất kỳ lý do (hiệu suất?) Để phá hủy các mảng ban đầu (tuyên bố/bắt buộc) thay vì trả lại một cái mới (expression/functional)? – tokland
Bạn sử dụng 'map' để tạo một mảng các ô vuông, và sau đó chỉ cần vứt nó đi và trả về' self'. – RocketR