使用外部 Array 方法修改 Array 实例自身
Modifying Array instances self with external Array method
在练习ruby的时候,我写了一个class这样的:
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!
,但我不知道如何以这种方式修改现有数组。
据我所知(我是初学者 Ruby 开发人员有 Java 方面的经验)我们可以通过 @
访问实例变量,但在那种情况下,我可以没有弄清楚最佳实践。解决这种情况的体面方法是什么?
谢谢。
我添加了一个 Array#my_map!
方法,如下所示:
def my_map!
self.replace(my_map {|e| yield(e)})
end
所以我们需要用新的临时实例替换实例(self)。效果很好。
在练习ruby的时候,我写了一个class这样的:
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!
,但我不知道如何以这种方式修改现有数组。
据我所知(我是初学者 Ruby 开发人员有 Java 方面的经验)我们可以通过 @
访问实例变量,但在那种情况下,我可以没有弄清楚最佳实践。解决这种情况的体面方法是什么?
谢谢。
我添加了一个 Array#my_map!
方法,如下所示:
def my_map!
self.replace(my_map {|e| yield(e)})
end
所以我们需要用新的临时实例替换实例(self)。效果很好。