Я ожидаю, что приведенный ниже код распечатает 1 и 2. Но я получаю default и default. Когда я явно пересылаю (?) неявное значение, используя закомментированный код, я вижу желаемый результат. Кто-нибудь может объяснить, как это работает? То, что я пытаюсь, невозможно? Я совершенно новичок в Scala. Что я должен прочитать, чтобы понять это глубже?
case class Context(id: Option[String])
object Context {
implicit val context = Context(Some("default"))
}
class ToolBuilder (id: String) {
implicit val context = Context(Some(id))
def extract() = ToolCreatorA.create()
}
case class ToolCreatorA(id: String)
object ToolCreatorA {
def create() = ToolCreator.create()
//def create()(implicit context: Context) = ToolCreator.create()
object ToolCreator {
def create()(implicit context: Context) = context.id.getOrElse("null")
}
}
object Main {
def main(args: Array[String]): Unit = {
println(new ToolBuilder("1").extract())
println(new ToolBuilder("2").extract())
}
}