我希望能够在这些行上做一些事情(不会编译):
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的版本是最好的.