Учитывая следующие определения свойств и сопутствующих объектов:
trait Api {
def foo(s: String): String
}
object Api extends Api {
override def foo(s: String) = s
}
Я хотел бы расширить метод foo объекта-компаньона, чтобы иметь функцию свойства, и для этого я использую следующий неявный класс:
implicit class ExtendApi(api: Api.type) {
object foo {
def asInt(s: String): Int = s.toInt
}
}
println (Api.foo.asInt("1")) // Does not work
Тем не менее, использование этого компилирует. Я получаю сообщение об ошибке:
missing argument list for method foo in object Api
Unapplied methods are only converted to functions when a function type is expected.
You can make this conversion explicit by writing `foo _` or `foo(_)` instead of `foo`.
Кажется, scala не разрешает неявное определение для поиска объекта foo
.
Я попытался указать явное, написав:
println (implicitly[Api.type].foo.asInt("1"))
Теперь я получаю еще одну ошибку:
could not find implicit value for parameter e: Playground.this.Api.type
Эта новая ошибка не имеет смысла для меня.
Возможно ли то, что я пытаюсь сделать? Как я могу исправить ошибки? Спасибо.
Scast ie Ссылка