我在 Scala 中有一个类,其中有四个参数,其中 2 个是变量,我想使用 Zio 中的 Ref 数据类型来控制对这些变量的访问,这是我的代码:
import zio._
class Rectangle(val width: Int,val height: Int) {
val x: UIO[Ref[Int]] = Ref.make(0)
val y: UIO[Ref[Int]] = Ref.make(0)
def this(x1: Int, y1: Int, width: Int, height: Int) {
this(width, height)
for {
ref <- this.x
_ <- ref.set(x1)
} yield ()
for {
ref <- this.y
_ <- ref.set(y1)
} yield ()
}
}
为了访问参考我写了这个:
import zio.console._
import zio._
object AccessRef extends App {
val myRec = new Rectangle(1, 2, 3, 4)
override def run(args: List[String]) =
for {
rec <- IO.succeed(myRec)
x <- rec.x
x1 <- x.get
_ <- putStrLn(x1.toString)
_ <-putStrLn(rec.height.toString)
} yield (0)
}
输出:
0
4
我想知道为什么 ref 的值不能更新为 1 而不是 0 ?