我想知道是否有办法在自定义控制结构的参数列表中创建临时变量。
本质上,我想创建一个类似于 for 循环的控制结构,我可以在其中创建一个变量 i,并且只能在循环体中访问 i:
for(i<- 1 to 100) {
//loop body can access i here
}
//i is not visible outside
我想在我的代码中做类似的事情。例如,
customControl ( myVar <- "Task1") {
computation(myVar)
}
customControl ( myVar <- "Task2") {
computation(myVar)
}
def customControl (taskId:String) ( body: => Any) = {
Futures.future {
val result = body
result match {
case Some(x) =>
logger.info("Executed successfully")
x
case _ =>
logger.error(taskId + " failed")
None
}
}
}
现在,我通过在自定义控制结构之外声明一个变量来解决这个问题,这看起来不太优雅。
val myVar = "Task1"
customControl {
computation(myVar)
}
val myVar2 = "Task2"
customControl {
computation(myVar2 )
}