gpt4 book ai didi

ruby-on-rails - ruby 软 delete_if 方法?

转载 作者:数据小太阳 更新时间:2023-10-29 08:17:51 26 4
gpt4 key购买 nike

当我在 ruby​​ 中有一个数组时,我可以在其上运行 delete_if block 。问题是它从我的数组中删除了元素。我想要相同的功能,只是不对原始数组进行更改,而是返回一个删除了对象的新数组。

例如:

myarr = ["foo", 5, 7, "bar"]
newarr = myarr.delete_if { |e| e.is_a?(String) }

会将 [5, 7] 返回给 newarr,但也会对原始数组 myarr 进行修改。

我本质上要寻找的是

myarr = ["foo", 5, 7, "bar"]
newarr = myarr.soft_delete_if { |e| e.is_a?(String) }

因此 newarr 将具有值 [5, 7] 但 myarr 仍将具有相同的值。

这样的东西存在吗?非常感谢!

最佳答案

使用拒绝

> newarr = myarr.reject{ |e| e.is_a?(String) }
=> [5, 7]
> myarr
=> ["foo", 5, 7, "bar"]

还有一个名为select 的相关方法,它的工作方式与reject 相同,只是它保留 谓词返回的元素true 而不是拒绝它们。

关于ruby-on-rails - ruby 软 delete_if 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4538539/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com