私はいくつかの方法が暗黙のパラメータ服用してクラスを定義しようとしている:私は別のクラスから、このクラスを使用するどのようにクラスレベルで暗黙のパラメータのデフォルト値を提供するために
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
クラス内で定義されていることがわかりましたので、何かが足りないと思います。
暗黙的にのみ、通常のパラメータに2番目に挿入されますので、それは、不思議ではありません。通常、あなたのクラスは 'class Greetings()(暗黙のval ...)'のようになります。 – thatsIch