2012-10-11 27 views
5

下面的代码段工作正常了许多分裂成它的数字,但它是太长:如何将数分裂成其数字斯卡拉

val digits = (num toString).toList map(_.toString) map(_.toInt) 

我马培德他们toString得到的实际价值时,应用toInt而不是代表由toList返回的CharInt值。

我是新来的斯卡拉,我不习惯scala的expresive风格。 有没有更简单的方法做到这一点。

+1

您应该像Luigi提到的那样使用'asDigit',但是,只要您知道,您可以将您的版本编写为'num.toString.map(_。 toString.toInt)'。 – dhg

回答

20
scala> 123.toString.map(_.asDigit) 
res0: scala.collection.immutable.IndexedSeq[Int] = Vector(1, 2, 3) 
5
(""+123).map(_-48) 

是我觉得从字面上最短的,但有时清晰更重要。 (至少'0'的一个额外字符,而不是48!)

+3

真棒1,清晰度0. –

+1

更短:(“”+123)map(_- 48) – djjeck

+0

无论如何,我不认为OP希望字面上最短的:) – djjeck