Существует ли функция Kotlin std lib для копирования списка, удалив все элементы, равные ОДНОМУ одному элементу? Функция, принимающая только один аргумент, не относящийся к коллекции? - PullRequest
0 голосов
/ 26 апреля 2020

Учитывая список произвольных объектов

input = listOf(a, b, c, a) 

... есть ли функция (с одним аргументом, не относящимся к коллекции) в стандартной библиотеке Kotlin, которую я могу использовать, чтобы сделать копию этого список, удаляющий все экземпляры ОДНОГО объекта?

Что-то вроде:

val filtered = input.removeAllInstancesOf(a)

Чтобы прояснить, я знаю о других (потенциальных) решениях этой задачи:

  1. Использование функции фильтра для выполнения это. → val output = input.filterNot { it == a }
  2. Использование функции минус с коллекцией → val output = input.minus(listOf(a))
  3. Использование функции минус с аргументом, не связанным с коллекцией → val output = input.minus(a) ← Удаляет только первый экземпляр!
  4. Удаление всех экземпляров из изменяемого списка.
  5. Написание такой функции. → Оберните все вышеперечисленное.

... но мне интересно, почему я не могу найти функцию, которая принимает только ОДНО значение, не относящееся к коллекции.

1 Ответ

4 голосов
/ 26 апреля 2020

но мне интересно, почему я не могу найти функцию, которая принимает только ОДНО значение, не относящееся к коллекции.

Потому что это гиперспецифический c вариант использования уже существующей функции filter. Как вы сами показали, это можно сделать в одну строку, и, вероятно, первое, что Kotlin dev попытается сделать (по крайней мере, я бы). Поэтому добавление новой функции в стандартную библиотеку, вероятно, не принесет особой пользы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...