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

Scala:如何将隐式参数应用于不同的范围?,scala,Scala,我不知道为什么我的隐式不在范围内。下面是一个测试: package test object Main extends App { import fp._ def foo(a: Int)(implicit b: B0) = a + b.x print(foo(1)) } 差异包中的组件: package fp trait Components { implicit val b0: B0 = B0(2) } object Components extends Compone

我不知道为什么我的隐式不在范围内。下面是一个测试:

package test

object Main extends App {
  import fp._

  def foo(a: Int)(implicit b: B0) = a + b.x
  print(foo(1))
}
差异包中的组件:

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))
           ^
有没有办法解决这个问题?

你需要这样做

import fp.Components._
或者在隐式范围内定义隐式值
b0
,例如在
b0
的伴随对象或包对象内

以下是一些阅读材料:


是的,这很有帮助。非常感谢。