我在scala工作。我经历了最高级的所有概念,如高阶函数,curried函数,宏等。但是在使用光滑的时候我并不理解这段代码片段。 db withSession { implicit session =>
我理解JdbcBackend.DatabaseDef
正在调用withSession
方法。所以在那之后我不知道该实现中发生了什么。请大家告诉我或者我需要知道与此实现相关的概念。 Tq
答案 0 :(得分:1)
您似乎已经了解了这些概念。 withSession
是在db
上定义的函数,它将单个函数作为其参数,即高阶函数:https://docs.scala-lang.org/tutorials/tour/higher-order-functions.html.html
Scala将允许您在调用该函数时省略点,即Infix表示法:https://docs.scala-lang.org/style/method-invocation.html#infix-notation
大括号只是创建一个标准代码块,但是当您使用=>
时,最终会得到一个定义函数的块,然后使用withSession
作为单个参数传递给{{1}}中缀符号。
答案 1 :(得分:0)
withSession
方法将业务逻辑与资源管理逻辑分开。 db.withSession
为用户提供与数据库的连接,然后用户可以使用它,并且在withSession
块的主体完成(正常或异常)之后,此连接将返回到连接池。< / p>
这种方法类似于java的tryWithResource
习语。