Jas*_*Jas 4 oop haskell functional-programming scala
日志记录混乱了我的"美丽"干净简单的短代码.而不是一个简单的
def mymethod = dosomething // scala
Run Code Online (Sandbox Code Playgroud)
我的代码也有所有这些讨厌的日志记录语句,并立即我必须添加新的行和花括号mymethod
.现在我不喜欢AOP
它只会明确代码 - >不清楚.无论如何要克服这个?我有简单的代码变得不那么简单,但我也需要记录.救命.
如何使这段代码简单明了,还有记录?
函数式编程的典型方法是添加高阶记录组合器.
log :: IO a -> String -> IO a
log f s = do
v <- f
print ("My message: " ++ s)
return v
Run Code Online (Sandbox Code Playgroud)
这样的包装器增加了对日志消息的功能评估.一般模式是\x y -> .. something with y .. return x
红隼组合器通常用于此:
def mymethod = dosomething.tap(x => log.info(s"I've done ... and got $x"))
Run Code Online (Sandbox Code Playgroud)
如果您需要为任何方法执行此操作,则会进行scala虚拟化,这允许重载某些语言概念,包括方法调用,我猜.另外,有人可能会建议查看宏观,但我没有足够的能力做出这个假设.