Tag: 隐式转换

我如何链接在斯卡拉暗示?

pimp-my-library模式允许我通过从该类到实现该方法的隐式转换,向表面上看似地添加方法的类。 斯卡拉不允许两个这样的隐式转换发生,但是,我不能从A到C使用隐式A到B和另一个隐式B到C 有没有办法解决这个限制?

Scala在哪里寻找隐含的东西?

Scala的新手隐含的问题似乎是:编译器在哪里查找implicits? 我的意思是隐含的,因为这个问题似乎从来没有完全形成,好像没有文字。 :-)例如,下面的integral值来自哪里? scala> import scala.math._ import scala.math._ scala> def foo[T](t: T)(implicit integral: Integral[T]) {println(integral)} foo: [T](t: T)(implicit integral: scala.math.Integral[T])Unit scala> foo(0) scala.math.Numeric$IntIsIntegral$@3dbea611 scala> foo(0L) scala.math.Numeric$LongIsIntegral$@48c610af 另一个决定学习第一个问题的答案的问题是编译器如何select使用哪种隐含的,在某些明显不明确的情况下(但无论如何编译)? 例如, scala.Predef定义了两个String转换:一个转换为WrappedString ,另一个转换为StringOps 。 然而,这两个类都有很多方法,所以为什么Scala在调用map时不会抱怨模糊的问题呢? 注:这个问题受到另一个问题的启发,希望以更一般的方式说明问题。 这个例子是从那里复制的,因为它在答案中被引用。