相关疑难解决方法(0)

如何定义一个函数,它将函数文字(带有隐式参数)作为参数?

我希望能够在这些行上做一些事情(不会编译):

def logScope(logger:Logger)(operation: (implicit l:Logger) => Unit) {/* code */ operation(logger) /* code */} 
def operationOne(implicit logger:Logger) {/**/}
def operationTwo(implicit logger:Logger) {/**/}
Run Code Online (Sandbox Code Playgroud)

然后像这样使用它:

logScope(new ConsoleLogger){logger =>
    operationOne
    operationTwo
    }
Run Code Online (Sandbox Code Playgroud)

但最接近我的工作解决方案是:

def logScope(logger:Logger)(operation: Logger => Unit) {/* code */ operation(logger) /* code */} 
def operationOne(implicit logger:Logger) {/**/}
def operationTwo(implicit logger:Logger) {/**/}

/* other code */

logScope(new ConsoleLogger){logger =>
    implicit val l = logger
    operationOne
    operationTwo
    }
Run Code Online (Sandbox Code Playgroud)

我不认为语言目前允许这样的结构,但仍然有任何建议或变通方法可以达到类似的结果吗?


次要更新:我已经创建了一个带有上述代码的略微扩展版本的要点,并尝试模拟这种文字.截至目前,CheatEx的版本是最好的.

parameters scala implicit function-literal

3
推荐指数
1
解决办法
1179
查看次数

标签 统计

function-literal ×1

implicit ×1

parameters ×1

scala ×1