Подтвердить что ты не робот

Что противоположно Array # reject в ruby?

Кажется, что это может быть keep_if.

Если да, то почему он не называется keep?

4b9b3361

Ответ 1

  • Противоположностью reject является select (возврат нового массива)
  • Противоположностью reject! является select! (редактирование массива на месте)
  • Противоположностью keep_if является delete_if (редактирование массива на месте)

Ответ 2

Я думаю, что это связано с хорошо продуманной семантикой, и я бы утверждал, что это правильно. Скажем, у вас уже есть множество вещей: "t1, t2 и t3"; если вы отклоняете подмножество, вы говорите: "Я отклоняю t1 и t2". Вы не упоминаете t3, потому что это не влияет на ваше действие (ваш отказ): по умолчанию "keep". Но если вы выражаете то, что собираетесь намереваться сохранить, и вы просто говорите: "Я держу t1 и t2", статус t3 ставится под сомнение: ведь у вас уже есть t1 и t2, поэтому, что бы сказать, (они уже находятся в состоянии по умолчанию, "сохраняют" ), тем более, что вы также не сохраняете t3. Используя синтаксис "keep_if", вы явно указываете, что существует условие (простое или составное), которое будет определять, что должно быть сохранено и что должно быть отброшено.