class Array
define_method(:trim) do
new_array = self.pop()
new_array = self.shift()
end
end
编辑:我尝试过的(除其他事项外)
[“hi”,“ho”,“he”]。trim()
返回“hi”。
删除最后一个元素。删除第一个元素。但是如何让方法返回剩余的数组而不是.shift返回的数组(或者该方法的最后一条指令)?我需要另一个变量吗?
谢谢。
答案 0 :(得分:3)
pop() and shift()
将直接修改数组。你只需要告诉方法返回自我
class Array
define_method(:trim) do
self.pop()
self.shift()
self
end
end
编辑:由于这种方法很危险,我建议您同时定义trim!
和trim
。 trim!
将直接修改数组,trim
返回数组的副本,修剪
class Array
def trim!
self.pop()
self.shift()
self
end
def trim
self.dup.trim!
end
end
答案 1 :(得分:3)
您可以在访问数组元素时使用范围,例如
ary = [1, 2, 3, 4]; ary[1..-2] #=> [2, 3]
回到方法,它可以是:
class Array
def trim
self[1..-2]
end
end
[编辑]:避免为空数组返回nil
:
class Array
def trim
self[1..-2] || []
end
end