如何在Scala中编写增量代码?

5 浏览
0 Comments

如何在Scala中编写增量代码?

有没有其他方法可以用Scala写出这段Java代码:

int foo () { return this.i++; }

除了:

def foo : int = { 
  val t = this.i 
  this.i += 1
  t
}

有没有其他方法可以用Scala写出这段Java代码:

def foo : Int = { 
  val t = this.i 
  this.i += 1
  t
}

0
0 Comments

如何在Scala中写递增代码?

问题的出现的原因是,原始的Java代码使用了后缀递增操作符,而Scala中没有类似的操作符。因此,提问者想知道如何在Scala中实现相同的功能。

然而,有人建议不要使用可变变量,因为它们是不好的。在Scala中,99%的真实代码不需要可变状态,所以应该假装Scala中没有var关键字,直到熟悉语言的概念足够以后,才能知道何时使用可变变量是一个好主意。

另外,有人指出,提问者的方法既要具有副作用,又要有返回值。提问者的方法是为了在使用旧值的同时设置一个新值。然而,其他人认为这个答案与问题无关,因为它没有涉及后缀递增操作。

还有人认为,提问者的方法并没有完全反映出Java代码的行为,因为它没有返回旧值。提问者的方法只模拟了副作用,但没有返回值。因此,有人认为这个答案并没有回答到问题的核心。

最后,有人认为提问者的问题是如何以一种与Java不同的方式实现递增操作。因此,提供了一种使用copy方法的解决方案,该方法可以增加变量的值而不改变原始实例。

总结起来,问题的出现是因为Scala中没有后缀递增操作符,而解决方法是使用copy方法来增加变量的值。这种方法可以避免使用可变变量,并且能够同时具有副作用和返回值。

0
0 Comments

Scala没有类似Java的后缀递增操作符。所以,如果你需要实现相同的功能,你的代码是正确的方式。

在Scala中,没有提供直接的后缀递增操作符。后缀递增操作符是一种方便的操作符,它可以在变量的值增加之后返回增加前的值。然而,Scala并没有在语言中提供这种操作符。

因此,如果你需要在Scala中实现递增操作,你需要使用其他方式。在上述问题中,使用变量的加法操作实现了递增操作。这是一种常见的方式,可以在Scala中实现递增操作。

在代码中,变量x的值会在加1之后进行更新。然后,变量的旧值会被返回。这样,你就可以获得递增之前的值。

下面是在Scala中实现递增操作的代码示例:

var x = 0
val oldValue = {
  x += 1
  x - 1
}
println(oldValue) // 输出0
println(x) // 输出1

在上述代码中,变量x的值会递增1。然后,变量x的值会减去1,并赋给变量oldValue。这样,我们就可以获得递增之前的值。

通过这种方式,我们可以在Scala中实现类似后缀递增操作符的功能。虽然不像Java中那样直观和简洁,但是可以满足我们的需求。

0