如何增加传递给Scala函数的整数变量?

J L*_*J L 7 scala parameter-passing immutability

我在函数外声明了一个变量,如下所示:

var s: Int = 0
Run Code Online (Sandbox Code Playgroud)

通过它如下:

def function(s: Int): Boolean={

   s += 1

   return true

}
Run Code Online (Sandbox Code Playgroud)

但是对于我的生活,错误线不会在"s + ="之下消失.我尝试了一切.我是Scala bww的新手.

om-*_*nom 4

首先,我将重复我的警告:下面的解决方案既晦涩又低效,如果可能的话请尝试坚持使用values。

implicit class MutableInt(var value: Int) {
  def inc() = { value+=1 } 
}

def function(s: MutableInt): Boolean={
   s.inc() // parentheses here to denote that method has side effects
   return true
}
Run Code Online (Sandbox Code Playgroud)

这是正在运行的代码:

scala> val x: MutableInt = 0 
x: MutableInt = MutableInt@44e70ff

scala> function(x)
res0: Boolean = true

scala> x.value
res1: Int = 1
Run Code Online (Sandbox Code Playgroud)

  • @JL 我希望你不会认真使用这个“解决方案”来做任何事,我不认为这是 om-nom-nom 的意图。 (7认同)