我可以使用toInt
将单个数字字符串转换为int:
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
来做到这一点?
答案 0 :(得分:5)
只需在toString
函数中添加map
:
"123".map(_.toString.toInt)
正如 Xavier 所解释的,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)