你能在scala中返回一个未评估的函数吗?

rye*_*guy 1 scala

鉴于此代码:

def getFunc(funcName:String, param:Int) = match funcName {
  case "FooFunc" => FooFunc(param)
  [...]
}

def FooFunc(param:Int) = param + SomeObject.SomeVariable
Run Code Online (Sandbox Code Playgroud)

我怎么能回到FooFuncparam应用,没有评估它?我想要这样做的原因是因为FooFunc,正如你所看到的,依赖于一个外部变量,所以我希望能够在param已经应用的情况下调用它.返回类型getFunc需要什么?

Ale*_*rov 5

简单:

def getFunc(funcName: String, param: Int) = funcName match {
  case "FooFunc" => () => FooFunc(param)
  [...]
}
Run Code Online (Sandbox Code Playgroud)

你的方法有一个好名字:getFunc应该返回一个函数,所以它会.