在Array上定义trim方法,删除第一个和最后一个元素

时间:2015-07-21 16:02:38

标签: arrays ruby methods

class Array
define_method(:trim) do
new_array = self.pop()
new_array = self.shift()
end
end

编辑:我尝试过的(除其他事项外)

[“hi”,“ho”,“he”]。trim()

返回“hi”。

删除最后一个元素。删除第一个元素。但是如何让方法返回剩余的数组而不是.shift返回的数组(或者该方法的最后一条指令)?我需要另一个变量吗?

谢谢。

2 个答案:

答案 0 :(得分:3)

pop() and shift()将直接修改数组。你只需要告诉方法返回自我

class Array
    define_method(:trim) do
      self.pop()
      self.shift()
      self
    end
end

编辑:由于这种方法很危险,我建议您同时定义trim!trimtrim!将直接修改数组,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