したがって、Int
引数を、次のようなメソッドと関数に渡すことができます。それを印刷する。今度はf(42)
と言うとき、コンパイラはその関数がInt
に適用され、別の関数が得られることを知ります。これは部分的に適用された関数のケースであることがわかります。 したがって、f(42)
という呼び出しを行うと結果は別の関数になります。コンパイラは、2番目の引数を渡すか、またはこの結果を部分的に適用された関数として処理する必要があると言っています。
あなたはそれが理にかなっているので、私は明示的なタイプを書かれている見ることができるように、
val ptln1:String=>Unit = System.out.println _ //Doing this to show the type of the println function
def f(arg: Int)(defaultArg: String => Unit = ptln1): Unit = ???
val t = f(42)()
を次のコードを考えてみましょう。
だから今、あなたは私が代わりにprintln
の自己定義関数を使用する場合
def f(arg: Int)(defaultArg: String => Unit = println _): Unit = ???
val t = f(42)()
はまた、必要に応じて以下の点を考慮して、以下のような暗黙のない
def f(arg: Int)(implicit defaultArg: String => Unit = println _): Unit = ???
f(42)()
それともこれを暗黙を使用して関数を渡すことができますいずれか。多分、これはそれをより明確にするでしょう。
implicit def testPrint(str:String):Unit = ???
def f(arg: Int)(implicit defaultArg: String => Unit = testPrint): Unit = ???
val t = f(42)
あるいは暗黙のない、
def testPrint(str:String):Unit = ???
def f(arg: Int)(defaultArg: String => Unit = testPrint): Unit = ???
val t = f(42)()
ああ、あなたは(指定する必要があります)パラメータのリストについては、* *それは暗黙のパラメータリストでない限り、 –