我想創建一個通用的包裝函數,可以圍繞返回對象的任何方法。 SO問題非常類似於this中的答案。我試過以下內容:Scala:返回泛型類型的包裝函數
def wrapper_function[T](f: => T): T = {
println("Executing now");
val ret: T = f;
println("Execution finished");
ret
}
def multiply2(x: Int): Int = wrapper_function {
println("inside multiply2");
return x*2
}
但是,我觀察到在wrapper函數內函數調用後沒有任何東西正在執行。具體而言,「執行完成」未被打印。
scala> val x = multiply2(4)
Executing now
inside multiply2
x: Int = 8
我使用Scala的2.11.8
難道我做錯了什麼嗎?這令人費解,我希望得到一些幫助。
在'multiply2'中,'return'不從傳遞給'wrapper_function'塊返回時,它被阻止返回'作爲一個整體乘以2。用'x * 2'替換'return x * 2'。 – Alec
關於'return'的博客文章:https://tpolecat.github.io/2014/05/09/return.html –