Я пытаюсь определить класс с некоторыми методами, принимающими неявный параметр:
object Greetings {
def say(name: String)(implicit greetings: String): String = greetings + " " +name
}
Я использую этот класс из другого класса
implicit val greetings = "hello" //> greetings : java.lang.String = hello
Greetings.say("loic") //> res0: String = hello loic
Greetings.say("loic")("hi") //> res1: String = hi loic
Моя проблема в том, что она работает, только если я определяю неявный val вне моего объекта Greetings. Я хотел бы иметь возможность предоставлять методы с неявными параметрами со значением по умолчанию внутри моего класса, чтобы упростить использование моего API (например, API-интерфейс Scala).
Итак, я хотел бы сделать это, но он не работает (неявное значение не найдено):
object Greetings {
implicit val greetings = "hello"
def say(name: String)(implicit greetings: String): String = greetings + " " +name
}
а затем
Greetings.say("loic")
Greetings.say("loic")("hi")
Я знаю, что могу определить значение по умолчанию с помощью (implicit greetings: String = "hello")
, но я хотел бы сделать это на уровне класса, чтобы избежать повторения, если существует много методов.
Я предполагаю, что у меня что-то не хватает, потому что я видел, что CanBuildFrom
определяется внутри класса List
, например.