концепции scala, включенные в db withSession {неявная сессия => - PullRequest
0 голосов
/ 06 мая 2018

Я работаю в Scala. Я прошел максимум всех понятий, таких как функция высокого порядка, функции карри, макросы и т. Д. Но работая со сликом, я не понял этот фрагмент кода. db withSession { implicit session =>

Я понял, что JdbcBackend.DatabaseDef вызывает withSession метод. Поэтому после этого я не знаю, что происходит в этой реализации. Пожалуйста, ребята, дайте мне знать, или мне нужно знать даже концепции, связанные с этой реализацией. Tq

Ответы [ 2 ]

0 голосов
/ 06 мая 2018

Вы уже, кажется, знаете концепции. withSession - это функция, определенная в db, которая принимает в качестве аргумента одну функцию, т.е. функцию высшего порядка: https://docs.scala -lang.org / tutorials / tour / upper-order-functions.html.html

Scala позволит вам опускать точки при вызове этой функции, то есть нотации с инфиксами: https://docs.scala -lang.org / style / method-invocation.html # infix-нотации

В фигурных скобках просто создается стандартный блок кода, но при использовании => в итоге получается блок, который определяет функцию, которая затем передается в withSession в качестве единственного аргумента с использованием инфиксной нотации.

0 голосов
/ 06 мая 2018

withSession метод отделяет бизнес-логику от логики управления ресурсами. db.withSession обеспечивает соединение с базой данных для пользователя, затем пользователь может использовать его, и после того, как тело блока withSession завершено (обычно или исключительно), это соединение возвращается в пул соединений.

Этот подход аналогичен tryWithResource идиоме Java.

...