2017-06-21 6 views
3
fun multipleParams(id: Int = 1 , name: String) { 
    ... 
} 

私はクラスで上記のメソッドを作成しました。次のメソッド呼び出しで正常に動作している:1つのパラメータを2つの関数に渡す方法はありますか?

multipleParams(1,"Rose") 

は時々私だけname、時には両方を渡すように、方法でそれを使用することが可能ですか?

multipleParams(1,"Rose") 
multipleParams("Rose") 

答えて

5

あなたはほとんどそこにいる - あなたはすでにそれが名前の持ってきたので、あなただけのnamed argumentsを利用する必要があります。

multipleParams(name = "Rose") 

をこれはそれとしてidため1のデフォルト値を使用します渡されません。name"Rose"を使用してください。最初の引数を指定していないので、単純に定位置引数を使うことはできないので、指定した名前を使用してください。

3

@Andrew Liの回答に追加したいと思います。

これを達成するために引数の順序を変更することができます。

fun multipleParams(name: String, id: Int = 1) { 
    ... 
} 

今、あなたは、道次の関数を呼び出すことができます。

multipleParams("Rose", 1) 
multipleParams("Rose") 

注:好ましくは、デフォルトの引数は、関数パラメータの最後でなければなりません。次に、名前付き引数を使用する必要はありません。

0

@ chandil03の回答に追加したいと思います。

「デフォルト引数は、関数のパラメータの最後でなければなりません」が、Function typesパラメータを除いて、あなたは例えば、Lambda Expressionを使用したい場合:

fun multipleParams(name: String, id: Int = 1, block:() -> Unit) { 
    ... 
} 

multipleParams("Rose") {}; 
multipleParams("Rose", 1) {}; 
関連する問題