Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如何使用日志编写清晰的代码?_Scala_Oop_Haskell_Functional Programming - Fatal编程技术网

Scala 如何使用日志编写清晰的代码?

Scala 如何使用日志编写清晰的代码?,scala,oop,haskell,functional-programming,Scala,Oop,Haskell,Functional Programming,日志记录使我的“漂亮”简洁的短代码变得杂乱无章。 而不是简单的 def mymethod = dosomething // scala 我的代码还包含所有这些讨厌的日志语句,我必须立即在mymethod中添加新行和大括号。 现在我不喜欢AOP它只会让代码变得清晰-->不清晰。 不管怎样,要克服这一切?当简单的代码变得不那么简单时,我就有了,但我还需要日志记录。救命啊 如何使这段代码清晰、简单、简短,并使用日志记录?通常用于: def mymethod = dosomething.tap(x =

日志记录使我的“漂亮”简洁的短代码变得杂乱无章。 而不是简单的

def mymethod = dosomething // scala
我的代码还包含所有这些讨厌的日志语句,我必须立即在
mymethod
中添加新行和大括号。 现在我不喜欢
AOP
它只会让代码变得清晰-->不清晰。 不管怎样,要克服这一切?当简单的代码变得不那么简单时,我就有了,但我还需要日志记录。救命啊

如何使这段代码清晰、简单、简短,并使用日志记录?

通常用于:

def mymethod = dosomething.tap(x => log.info(s"I've done ... and got $x"))

如果您需要对任何方法执行此操作,那么有一个虚拟化的scala,它允许重载一些语言概念,我想包括方法调用。另外,有人可能会建议查看宏,但我没有足够的能力做出这种假设。

函数式编程中的一种典型方法是添加一个高阶日志组合器

log :: IO a -> String -> IO a 
log f s = do
    v <- f
    print ("My message: " ++ s)
    return v
log::IO a->String->IO a
log f s=do

v有点不对劲。。返回x

,这是一种表达简单问题的肮脏方式。这与haskell有什么关系?