我需要将一些Java代码转换为Scala.我有这样的来源.如何在Scala中重写它?问题可能很简单.但它在文档中的(i < - 1到10){}示例中更难匹配.
for (int i = password.length(); i != 0; i >>>=1)
{ some code }
Run Code Online (Sandbox Code Playgroud)
金问候,阿列克谢
如果你想让它尽可能快 - 我假设在给定移位操作的情况下 - 那么你应该使用while循环:
var i = password.length()
while (i != 0) {
// some code
i >>>= 1
}
Run Code Online (Sandbox Code Playgroud)
这是少数几种Java比Scala更紧凑的情况之一.
您还可以使用尾递归:
final def passwordStuff(password: Password)(i: Int = password.length): Whatever = {
if (i != 0) {
// Some code
passwordStuff(password)(i >>> 1)
}
}
Run Code Online (Sandbox Code Playgroud)
这将编译成与while循环相同的速度(几乎在所有情况下,无论如何).