我在函数外部声明了一个变量,如下所示:
var s: Int = 0
像这样通过它:
def function(s: Int): Boolean={
s += 1
return true
}
但在我的一生中,错误行不会在“s + =”下消失。我什么都试过了。顺便说一句,我是 Scala 的新手。
我在函数外部声明了一个变量,如下所示:
var s: Int = 0
像这样通过它:
def function(s: Int): Boolean={
s += 1
return true
}
但在我的一生中,错误行不会在“s + =”下消失。我什么都试过了。顺便说一句,我是 Scala 的新手。
首先,我要重复我的警告:下面的解决方案既晦涩又低效,如果可能的话,尽量坚持使用val
ues。
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
}
下面是实际代码:
scala> val x: MutableInt = 0
x: MutableInt = MutableInt@44e70ff
scala> function(x)
res0: Boolean = true
scala> x.value
res1: Int = 1
如果您只想不断增加整数,则可以使用 Stream。
val numberStream = Stream.iterate(0)(_ + 1).iterator
这会在从零开始的永无止境的数字流上创建一个迭代器。然后,要获取下一个号码,请致电
val number: Int = numberStream.next
我也刚刚开始使用 Scala,这是我的工作。
var s: Int = 0
def function(s: Int): Boolean={
var newS = s
newS = newS + 1
s = newS
return true
}
从我读到的内容中,您没有将相同的“s”传递到您的函数中,因为在其余代码中。我相信有更好的方法,但这对我有用。
你没有。
Avar
是一个名称,它引用可能会更改的引用。当你调用一个函数时,你传递了引用本身,一个新的名字被绑定到它上面。
因此,要更改名称指向的引用,您需要对包含该名称的任何内容的引用。如果它是一个对象,那就很容易了。如果它是一个局部变量,那么它是不可能的。
另请参阅通过引用调用,尽管我认为这个问题不是真正的重复。
如果你只想增加一个从 3 开始的变量
val nextId = { var i = 3; () => { i += 1; 一世 } }
然后调用它:
下一个 ID()