【发布时间】:2012-10-15 18:14:04
【问题描述】:
在 Scala 中,我如何将隐式转换的导入委托给我的作用域,这样我就不必有一个大的“环境”类来提供库函数/值(对于我正在创建的 DSL)作为以及隐式转换?
简而言之,我可以将我的隐式转换从一个对象中移出,并在我编写时仍然将其导入:
导入 MyDslEnvironment._
?
这样做的目的是让我的框架的导入和使用变得简单而轻量,因为只有一个导入语句为用户提供了我的 DSL/框架所需的功能。
PS:在任何人激怒我之前 - 是的,我知道隐式转换可能带来的陷阱和肮脏。
【问题讨论】:
-
将它们放在一个包对象中对你有用吗?
-
我指给你看 Josh Suereth 的这个视频:vimeo.com/20308847
-
史蒂夫> 请详细说明。我还没有真正涉足包对象:)
-
@Felix 包对象之于包,就像伴生对象之于它们的伴生类或特征一样。每当您导入一个包时,如果定义了一个包对象,则包本身和关联的包对象中的所有内容都是可用的。
-
这很好。可能是更好的抽象,因为对于用户来说,感觉就像他/她正在导入框架而不是单例对象的内容。
标签: scala object import delegates implicit-conversion