と連動して、デフォルトの引数は次のことを考えてみましょう:Scalaは名前が付けられ、暗黙のパラメータ
def f(implicit a: String, y: Int = 0) = a + ": " + y
implicit val s = "size"
println(f(y = 2))
最後の式は、次のエラーが発生:あなたは暗黙的にデフォルト値を提供する場合、しかし、
not enough arguments for method f: (implicit a: String, implicit y:
Int)java.lang.String. Unspecified value parameter a.
をパラメータa、問題はありません:
def f(implicit a: String = "haha!", y: Int = 0) = a + ": " + y
implicit val s = "size"
println(f(y = 2))
最終行私は
size: 2
を期待しているだろうが
haha!: 2
よだから、暗黙の値 's' はピックアップされていません。あなたの代わりにFまでの任意のパラメータを提供しないし、ちょうど
println(f)
を呼び出す場合は、暗黙の値をピックアップし、あなたが
size: 0
を取得している誰かがここで何が起こっているのかについていくつかの光を当てることができますか?
あなたが暗黙的に使用している暗黙のどの範囲を確認する必要があります。私はそれが第二の選択肢と同じだとは思わない。 – jsuereth