Scalaz库导入技术推理
你们中有人知道为什么 Scalaz 的示例总是使用这种导入技术:
import scalaz._
import Scalaz._
而不是:
import scalaz.Scalaz._
吗?我试图理解这种偏好背后的原因是什么。
谢谢!
Do any of you know why examples from Scalaz always use this import technique:
import scalaz._
import Scalaz._
rather than:
import scalaz.Scalaz._
? I'm trying to understand what the reasoning behind the preference is.
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我相信这是因为
import scalaz._; import Scalaz._
从scalaz
包导入所有成员,从scalaz.Scalaz
对象导入所有成员。如果您只导入
import scalaz.Scalaz._
,那么您仅从scalaz.Scalaz
对象导入成员。I believe it's because
import scalaz._; import Scalaz._
imports all members from thescalaz
package and from thescalaz.Scalaz
object.If you will just import
import scalaz.Scalaz._
, then you only import members from thescalaz.Scalaz
object.import scalaz._ 从核心包导入所有 [type] 类。
import Scalaz._ 导入隐式函数,这使得所有这些类都变得有用。比如从标准集合到 MA 的转换以及获取 Option 包装器等等。
所以你可以只用一个而不用另一个。
我相信这是一个有意识的设计决定,让我们能够解决任何类型的隐式相关问题,例如这个。
import scalaz._ imports all [type]classes from the core package.
import Scalaz._ imports implicits which make all these classes useful. Like conversions from standard collections to MA and getting Option wrapper and so on.
So you can use one without another.
I believe this is a conscious design decision to allow us survive any kind of implicit-related issues, like this one.