为什么“上下文”依赖项经常在Scala中隐式传递?

问题描述 投票:0回答:1

我很好奇,为什么在Scala中如此频繁地隐式地传递“上下文”依赖项。我正在看fs2-kafka库,并且像往常一样,反序列化器是隐式传递的。我很难看到它的优点,似乎它只是通过隐藏依赖来混淆代码。有谁知道以这种方式传递参数有什么好处?

编辑:要清楚,我不是在问这是否是一种好习惯;那是主观的。我想知道是什么原因。我们不会隐式地传递大多数依赖关系,只是为了避免不得不显式传递它们带来的不便,那么为什么如此频繁地使用反序列化器之类的上下文依赖关系呢?

scala implicit
1个回答
2
投票

反序列化器通常是类型类,Scala实现类型类的方式是通过implict参数。手动执行此操作将需要更多代码,并要求程序员进行类型匹配,编译器可以使用类型类自行完成。

ExecutionContext方法中的scala.util.Future是一个简单依赖的更好示例,在这种情况下,它简化了调用代码,并使得在给定范围内提供不同的上下文更加容易。

© www.soinside.com 2019 - 2024. All rights reserved.