Scala:如何将隐式参数应用于不同的范围?

时间:2015-12-30 09:31:34

标签: scala

我无法找出为什么我的隐含不在范围内。这是一个测试:

package test

object Main extends App {
  import fp._

  def foo(a: Int)(implicit b: B0) = a + b.x
  print(foo(1))
}

diff包中的组件:

package fp

trait Components {
  implicit val b0: B0 = B0(2)
}

object Components extends Components

sealed trait B
case class B0(x: Int) extends B

我得到的错误

could not find implicit value for parameter b: fp.B0
  print(foo(1))
           ^

任何想法如何解决?

1 个答案:

答案 0 :(得分:3)

你需要做

import fp.Components._

或在隐式作用域中定义隐式值b0,例如B0的伴随对象内部或包对象。

以下是一些阅读材料: