Когда у меня есть массив в ruby, я могу запустить на нем блок delete_if.
Проблема в том, что он удаляет элементы из моего массива. Мне нужна та же функциональность, за исключением того, что я не изменяю исходный массив, а возвращаю новый массив с удаленными объектами.
Например:
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
будет по-прежнему иметь те же значения.
Существует ли что-то подобное?
Большое спасибо!