Kotlin Safe Парная итерация - PullRequest
       7

Kotlin Safe Парная итерация

0 голосов
/ 19 октября 2019

Я только начал с Kotlin, и для практики я хочу прочитать некоторые вещи из аргументов программы попарно.

Вход в программу следующий: Алиса 10 Боб 20 ...

У меня есть текущая версия, которая разумно работает, разбивая входные данные и попарно итерируя

for((name, age)  in args.asIterable().chunked(2)) 

Однако, если я передам неравное число аргументов, последний список будет содержать только один элемент, и назначение завершится неудачно сIndexOutOfBoundsException.

Я мог бы сделать эту работу, добавив фильтр в разделенный список, который выбрасывает последний список, если он имеет неправильный размер:

 for((name, age)  in args.asIterable().chunked(2).filter { it -> it.size==2 })

Однако у меня есть некоторыепроблемы с этим

  • У меня длина списка указана дважды
  • С фильтром он выглядит намного менее читаемым и элегантным
  • Фильтр должен проходитьрелевантен весь список, но только последний подсписок

Является ли хорошим решением получение чанкования для возврата только целых чанков или безопасного и элегантногоAnt способ читать только полные подсписки?

1 Ответ

5 голосов
/ 19 октября 2019

Использование windowed. Третий аргумент определяет, передавать ли частичные окна, и по умолчанию он имеет значение false, поэтому вы можете просто его пропустить.

for((name, age) in args.asSequence().windowed(2, 2)) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...