2012-10-11 29 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