Обычно я пишу сначала case class
, а затем компаньон object
в том же файле, справа. Но при попытке импорта объявленного в компаньоне implicit
я вынужден переключить порядок объявления (и я не хочу, очевидно). Какова рекомендуемая практика для преодоления этой ситуации?Неявное разрешение для разных порядков класса и сопутствующего класса
Для конкретного случая, следующий код не работает:
object SomeLib {
def doSomething[T : List](t: T) = "meh"
}
case class FooWorker(x: String) {
import FooWorker._ // bring the implicit in scope for doSomething
def then(event: String) : FooWorker = {
copy(x = SomeLib.doSomething(event)) // requires implicit
}
}
object FooWorker {
implicit val list = List("a", "b", "c")
}
Но если я объявляю object FooWorker
перед тем case class FooWorker
он работает. Я использую Scala 2.11.6 и SBT для тестирования. Большое спасибо!
@TravisBrown Я не использую REPL. У меня есть проект sbt с одним файлом 'Main.scala' с этим внутри и простым драйвером для его проверки. Я запускаю его непосредственно с консоли (т. Е. 'Sbt run'). – ale64bit