Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 在数组上定义删除第一个和最后一个元素的修剪方法_Arrays_Ruby_Methods - Fatal编程技术网

Arrays 在数组上定义删除第一个和最后一个元素的修剪方法

Arrays 在数组上定义删除第一个和最后一个元素的修剪方法,arrays,ruby,methods,Arrays,Ruby,Methods,编辑:我在其他事情中尝试了什么 [嗨,呵呵,他] 这回你好 删除最后一个元素。移除第一个元素。但是我如何让方法返回剩余的数组,而不是由.shift或该方法的最后一条指令返回的数组呢?我需要另一个变量吗 谢谢。pop和shift将直接修改阵列。您只需要告诉方法返回self class Array define_method(:trim) do new_array = self.pop() new_array = self.shift() end end 编辑:由于这种方法可能很危险,我建议您定义

编辑:我在其他事情中尝试了什么

[嗨,呵呵,他]

这回你好

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

谢谢。

pop和shift将直接修改阵列。您只需要告诉方法返回self

class Array
define_method(:trim) do
new_array = self.pop()
new_array = self.shift()
end
end
编辑:由于这种方法可能很危险,我建议您定义两种修剪!和修剪。哪里修剪!将直接修改数组并修剪返回数组的副本,修剪

class Array
    define_method(:trim) do
      self.pop()
      self.shift()
      self
    end
end
pop和shift将直接修改数组。您只需要告诉方法返回self

class Array
define_method(:trim) do
new_array = self.pop()
new_array = self.shift()
end
end
编辑:由于这种方法可能很危险,我建议您定义两种修剪!和修剪。哪里修剪!将直接修改数组并修剪返回数组的副本,修剪

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

访问数组元素时可以使用range,如下所示

ary=[1,2,3,4];ary[1..-2]=>[2,3] 因此,回到方法,它可以是:

类数组 def微调 自我[1..-2] 终止 终止 [编辑]:为避免为空数组返回nil:


访问数组元素时可以使用range,如下所示

ary=[1,2,3,4];ary[1..-2]=>[2,3] 因此,回到方法,它可以是:

类数组 def微调 自我[1..-2] 终止 终止 [编辑]:为避免为空数组返回nil:


我也是这样做的。对于空数组,这会返回nil,即。[].trim->nil是的,我可能会在前面放一个保护子句,比如return self if self.empty?@Stefan你是对的,可以提前返回[]if empty?,施放或使用Cyril的答案。我也是这样做的。对于空数组,这会返回nil,即。[].trim->nilYeah,我可能只是在前面加了一个守卫子句,比如self.empty?返回self?@Stefan你是对的,可以提前返回[]如果为空?,施放或使用西里尔的答案。你可以省略self。这是一个很好的答案,西里尔。我在研究同一个问题,它真的很有帮助。你所做的与avg有很大不同,所以你知道@Yalla Papi与.pop和.shift一起工作,你将它们包括在你的答案中,而szymek的答案使用了更先进的技术,但没有帮助。我希望能有更多的回答者像你们一样回答。@stefan谢谢!!!这真是太好了。这个问题即使在你调整的时候也能解决。你可以省略self。这是一个很好的答案,西里尔。我在研究同一个问题,它真的很有帮助。你所做的与avg有很大不同,所以你知道@Yalla Papi与.pop和.shift一起工作,你将它们包括在你的答案中,而szymek的答案使用了更先进的技术,但没有帮助。我希望能有更多的回答者像你们一样回答。@stefan谢谢!!!这真是太好了。这个问题即使在你调整的时候也会出现。不需要define_方法,只需使用def trim。不需要define_方法,只需使用def trim