Почему «контекстные» зависимости так часто неявно передаются в Scala? - PullRequest
0 голосов
/ 27 февраля 2020

Мне любопытно, почему передача "контекстных" зависимостей так часто делается неявно в Scala. Я смотрю на библиотеку fs2-kafka, и, как обычно, десериализаторы передаются неявно. Я с трудом вижу преимущества этого, кажется, что он просто запутывает код, скрывая зависимости. Кто-нибудь знает, каковы положительные стороны передачи параметров таким способом?

Редактировать: Для ясности, я не спрашиваю, является ли это хорошей практикой; это субъективно Мне интересно, в чем причина. Мы не пропустили бы большинство зависимостей неявным образом, просто чтобы избежать неудобства, связанного с передачей их явно, так почему же это так часто делается с зависимостями контекста, такими как десериализаторы?

1 Ответ

2 голосов
/ 27 февраля 2020

Десериализаторы обычно являются классами типов, и способ, которым Scala реализует классы типов, заключается в использовании implict аргументов. Выполнение этого вручную приведет к гораздо большему количеству кода и потребует от программиста сопоставления типов, которое компилятор может сделать сам с классом типов.

Лучшим примером простой зависимости будет ExecutionContext в scala.util.Future методы, и в этом случае это упрощает вызывающий код и облегчает предоставление другого контекста в пределах данной области.

...