我做错了什么?例如,这应该返回10:
{ val (get, set) = getAndSet (5); set (10); get () }
val getAndSet : Int => (() => Int, Int => Unit) = {
var s : Int = 0
val get : () => Int = () => {
val z = s;
s = s + 1;
z
}
val set : Int => Unit = (x:Int) => {
s = x
}
x => (get, set)
}
答案 0 :(得分:0)
一些错误:
n
不存在,您可能是s
。x => (get, set)
,但您没有以任何方式使用x
。以下是您的代码中修改最少的版本
val getAndSet: Int => (() => Int, Int => Unit) = {
var s: Int = 0
val get : () => Int = () => {
val z = s;
s = s + 1;
z
}
val set : Int => Unit = (x:Int) => {
s = x
}
x => (get, set)
}
由于您未使用x
,您可以选择
val getAndSet: Int => (() => Int, Int => Unit) = _ => {
var s: Int = 0
val get : () => Int = () => {
val z = s;
s = s + 1;
z
}
val set : Int => Unit = (x:Int) => {
s = x
}
(get, set)
}