def mymethod = dosomething // scala
我的代码也有所有这些讨厌的日志记录语句,我必须立即向mymethod
添加新行和大括号。
现在我不喜欢AOP
它只会制作清晰的代码 - >不清楚。
无论如何要克服这个?我有简单的代码变得不那么简单,但我也需要记录。帮助
如何使这段代码简单明了,还有记录?
答案 0 :(得分:7)
函数式编程的一种典型方法是添加一个高阶记录组合器。
log :: IO a -> String -> IO a
log f s = do
v <- f
print ("My message: " ++ s)
return v
这样的包装器增加了对日志消息的功能评估。
一般模式是\x y -> .. something with y .. return x
答案 1 :(得分:5)
Kestrel combinator通常用于此:
def mymethod = dosomething.tap(x => log.info(s"I've done ... and got $x"))
如果您需要为任何方法执行此操作,则会进行scala虚拟化,这会允许重载某些语言概念,包括方法调用。另外,有人可能会建议查看宏观,但我没有足够的能力做出这个假设。