暗黙のパラメーターを取るいくつかのメソッドでクラスを定義しようとしています:
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
私の問題は、Greetings オブジェクトの外部で暗黙の val を定義した場合にのみ機能することです。API (Scala コレクション API など) を簡単に使用できるように、メソッドに暗黙的なパラメーターとクラス内のデフォルト値を提供できるようにしたいと考えています。
だから私はこれをしたいのですが、うまくいきません(暗黙の値が見つかりません):
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