在練習 ruby?? 時,我寫了一個這樣的類:
class Array
def my_each
c = 0
until c == size
yield self[c]
c = 1
end
end
def my_map
c = 0
acc = []
my_each {|e| acc << yield(e)}
acc
end
end
def plus_two(a)
a = 2
end
nums = [1, 2, 3, 4, 5]
nums.my_map {|e| plus_two(e)}
p nums
它作業得很好并且符合預期。但是,我想實作Array#my_map!which 修改實體,我無法弄清楚如何以這種方式修改現有陣列。
據我所知(我是一個初學者,有 Java 經驗)我們可以訪問實體變數,@但在這種情況下,我無法找出最佳實踐。解決這種情況的好方法是什么?
謝謝。
uj5u.com熱心網友回復:
我添加了Array#my_map!如下所示的方法:
def my_map!
self.replace(my_map {|e| yield(e)})
end
所以我們需要用我們新的臨時實體替換實體(self)。效果很好。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/373360.html
