我开始学习scala。想知道是否有人有更好的方法以更实用的方式重写下面的代码。我知道一定有一个。
val buf = ((addr>>24)&0xff) + "." + ((addr>>16)&0xff) + "." + ((addr>>8)&0xff) + "." + ((addr)&0xff)
最佳答案
这将使用 Range(24, 16, 8, 0)
生成 (24 to 0 by -8)
,然后使用 addr >> _ & 0xff
将函数 map
应用于每个数字。最后,数字的映射 Range
与 .
“连接”以创建一个字符串。
该映射比使用 +
运算符更实用,但其余的只是语法糖和对 mkString
的库调用。
val addr = 1024
val buf = (24 to 0 by -8).map(addr >> _ & 0xff).mkString(".")
buf: java.lang.String = 0.0.4.0
关于scala - 更优雅的Scala代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14133365/