从Array中删除并返回Ruby中已删除的元素

New*_*Mrd 14 ruby arrays select

如何从数组中删除一些元素并选择它们?

例如:

class Foo 
  def initialize
    @a = [1,2,3,4,5,6,7,8,9]
  end

  def get_a
    return @a
  end
end

foo = Foo.new
b = foo.get_a.sth{ |e| e < 4 }
p b # => [1,2,3]
p foo.get_a # => [4,5,6,7,8,9,10]
Run Code Online (Sandbox Code Playgroud)

我可以用什么而不是foo.get_a.sth

saw*_*awa 27

如果您不需要保留以下对象ID a:

a = [1,2,3,4,5,6,7,8,9,10]
b, a = a.partition{|e| e < 4}
b # => [1, 2, 3]
a # => [4, 5, 6, 7, 8, 9, 10]
Run Code Online (Sandbox Code Playgroud)

如果确实需要保留对象id a,则使用时间数组c:

a = [1,2,3,4,5,6,7,8,9,10]
b, c = a.partition{|e| e < 4}
a.replace(c)
Run Code Online (Sandbox Code Playgroud)

  • 你能不能只使用`a.select {| e | e <4}`那个案子?这将返回通过测试的元素. (4认同)