Как уничтожить в безопасном виде? - PullRequest
0 голосов
/ 27 августа 2018

Предположим, что вы хотите извлечь несколько значений разных типов из строки путем деструктурирования регулярного выражения MatchResult:

val regex = Regex("(\\d) ([AB])")
val (num: Int, token: String) = regex.find("0 A")!!.destructured

Вышеуказанное не работает, как component1() function returns String, but Int is required.

Есть ли элегантный / канонический способ напрямую получить num как Int, а не как String?

1 Ответ

0 голосов
/ 27 августа 2018

Я вижу проблему в том, что шаг синтаксического анализа или преобразования отсутствует.

Самое простое решение, которое приходит мне в голову, это:

val (num : Int, token : String) = regex.find("0 A")!!.destructured.let { 
    (s, s2) -> s.toInt() to s2
}

Но элегантный / канонический? Я оставляю это на ваше усмотрение.

Я не знаю ни одной другой встроенной функции, которая выполняет автоматическое преобразование; -)

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