次の点を考慮してください。
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))
しかし、最後の行は印刷されます
haha!: 2
私が期待していたであろう間
size: 2
したがって、暗黙の値「s」は取得されません。代わりに f にパラメータを指定せず、単に呼び出す場合
println(f)
次に、暗黙の値が取得され、取得します
size: 0
誰かがここで何が起こっているのかを明らかにできますか?