2017-09-28 7 views
0

私は、デフォルトの引数を持つ関数を作成し、その関数を変数に保存しました。Kotlinでは、関数が変数に代入された後、デフォルトの引数が渡されないのはなぜですか?

しかし、私が変数を通して関数を呼び出すと、デフォルトの引数は渡されません。

fun main(args : Array<String>) { 
    printNum() 
    val fn = ::printNum 
    fn(0) 
    fn() // error: no value passed for parameter 'i' 
} 
fun printNum(i: Int = 10) = println(i) 
+1

質問を正式化するためにThy。これは単なる声明です。 – guenhter

+1

この時点では、デフォルト値の関数参照はサポートされていません。この[問題](https://youtrack.jetbrains.com/issue/KT-8834)を参照してください。 – BakaWaii

+0

@BakaWaiiよろしくお願い致します。 – user3610570

答えて

2

これは、メソッド参照を使用しているためです。 fn変数のタイプはKFunction<Int, Unit>です。 fn()を呼び出すと、fn.invoke()にコンパイルされます。ここでは、引数として整数が必要です。

+0

答えをありがとう。だから私は、変数に割り当てられた関数を呼び出す方法がないと思います。つまり、デフォルトの引数を持つ関数リファレンスですか? – user3610570

+0

これはサポートされていません – s1m0nw1

関連する問題