Преобразование строки в набор цифр в Scala с использованием map и toInt - PullRequest
2 голосов
/ 19 июня 2019

Я могу преобразовать однозначную строку в int, используя toInt:

scala> "1".toInt
res1: Int = 1

Однако, когда я использую map для итерации по символам и конвертирую их по отдельности, используя toInt, я получаю их коды ASCII:

scala> "123".map(_.toInt)
res2: scala.collection.immutable.IndexedSeq[Int] = Vector(49, 50, 51)

Почему это так и возможно ли использовать map и toInt для достижения этой цели?

1 Ответ

5 голосов
/ 19 июня 2019

Просто добавьте toString в вашу map функцию:

 "123".map(_.toString.toInt)

Как Ксавье объяснил, что элемент String (- коллекция) - это Char -так что просто сделайте String снова.

Или используйте, как он предложил .asDigit:

"123".map(_.asDigit)

Из Repl:

scala> "123".map(_.toInt)
res0: scala.collection.immutable.IndexedSeq[Int] = Vector(49, 50, 51)

scala> "123".map(_.toString.toInt)
res1: scala.collection.immutable.IndexedSeq[Int] = Vector(1, 2, 3)

scala> "123".map(_.asDigit)
res2: scala.collection.immutable.IndexedSeq[Int] = Vector(1, 2, 3)
...