к его значению по умолчанию).
у иметь возможность что-то сделать в этих строках (не скомпилировать):
def logScope(logger:Logger)(operation: (implicit l:Logger) => Unit) {/* code */ operation(logger) /* code */}
def operationOne(implicit logger:Logger) {/**/}
def operationTwo(implicit logger:Logger) {/**/}
А затем используйте это так:
logScope(new ConsoleLogger){logger =>
operationOne
operationTwo
}
Но самое близкое, что я пришел к рабочему решению, это:
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
}
Я не думаю, что язык в настоящее время позволяет такие конструкции, но все же, какие-либо предложения или обходные пути для достижения аналогичных результатов?
незначительное обновление: ясоздал суть с немного расширенной версией вышеупомянутого кода с парой попыток симулировать этот тип литерала. На данный момент версия CheatEx является лучшей.