我是 Scala 的新手,正在玩惰性求值,偶然发现了这个问题:如果我想让val c的惰性求值有效,我必须在c的声明之前编写虚拟变量a和b,这我认为样板文件太多。我试图在没有初始初始化的情况下声明a和b惰性值,但编译器抱怨。如果我写类似:也不起作用。 lazy val c = a:Double, b:Int
有没有办法摆脱这些虚拟变量?我可以用更优雅的方式重构这段代码吗?
var a = 0d; //> a : Double = 0.0
var b = 0; //> b : Int = 0
lazy val c = a / b //> c : Double = <lazy>
//some other code...
a = math.Pi
b = -1
(1 to 10).foreach(x => println(f"$x, ${x * c}%.8s"))
//> 1, -3.14159
//| 2, -6.28318