我开始学习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/

10-13 05:55