Я не смог найти метод в документах, чтобы сделать следующее:
a = [1, 2, 3]
b = a.remove! {|x| x > 1}
puts a # [1]
puts b # [2, 3]
Существует select!
метод, который делает похожую вещь, но не принимает предикат.
К моему разочарованию, delete_if
, keep_if
, reject!
и select!
изменяют массив, но также возвращают тот же массив.
В настоящее время я достигаю желаемого за 2 шага, как это, но, может быть, есть варианты лучше / умнее?
a = [1, 2, 3]
b = a.reject {|x| x > 1}
a = a - b
puts a # [1]
puts b # [2, 3]