請注意,在以下代碼中,“Hello”test1()在test2().
假設我不能改變 changef()和g(),我怎么能改變test2()它的行為test1(),同時保留給運算式一個別名的能力(在這種情況下x)?
基本上,我正在尋找從test1()到類似test2()的轉換,無論如何都不會改變代碼的含義。
object Main extends App {
println("test1")
println(test1())
println("test2")
println(test2())
def test1() : Int = {
f(g())
}
def test2() : Int = {
lazy val x = g()
f(x)
}
def g() : Int = {
println("Hello")
42
}
def f(x: => Int) : Int = {
x * x
}
}
uj5u.com熱心網友回復:
只需使用def而不是val:
def test2(): Int = {
def x = g()
f(x)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/338804.html
標籤:斯卡拉
