Lui*_*hys 3 string int scala char
我只想总结BigInt的数字.我可以
scala> "1 2 3".split(" ").map(_.toInt).sum
res23: Int = 6
Run Code Online (Sandbox Code Playgroud)
所以我试过了
scala> BigInt(123).toString().map(_.toInt).sum
res24: Int = 150
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为它将字符映射到其Unicode值.
以下两项工作,但是有没有比使用Java静态方法或额外的toString转换更优雅的方式?
BigInt(123).toString().map(Character.getNumericValue(_)).sum
BigInt(123).toString().map(_.toString.toInt).sum
Run Code Online (Sandbox Code Playgroud)
(我也是使用递归函数完成它,完全回避字符串,但我对这里简洁的1-liner感兴趣.)
哇......这些答案到处都是!在这里,这样做:
BigInt(123).toString().map(_.asDigit).sum
Run Code Online (Sandbox Code Playgroud)
怎么不使用字符串呢?
def sumDigits(b:BigInt):BigInt = {
if (b < 10) b else b%10 + sumDigits(b/10)
}
Run Code Online (Sandbox Code Playgroud)