2017-09-28 3 views
1

私は疑問に思っていましたが、これはKotlinで可能ですか?もしそうなら、正しい構文は何ですか?私は、関数の引数を変更するにはどうすればよいKotlinのElvis "if"演算子を関数のデフォルト引数として

  1. それはnullが渡された場合、

  2. をチェックするnull値を渡すことが可能です - 他のその後>name = ""name = name

何をすべきか?

fun simpleFunction(name: String?) { 
     ... 
} 

私は、引数が関数呼び出しサイトで渡されていない場合、デフォルトのパラメータのみが適用されるので、それは、少なくともこの方法ではできません

fun simpleFunction(name: String? = null ? "" : name) { 
    ... 
} 
+2

I'd just wri "val" name = name?: "" '、あなたはシャドウネーミングの警告を受け取りますが、変数名を変更せずに' val'引数を再割り当てするためにこれまでに見つけた最良の回避策です – elect

答えて

3

を試してみました。

あなたは、次のいずれかの操作を実行しようとすることができます:

@JvmName("simpleFunctionNullableName") 
fun simpleFunction(name: String?) = simpleFunction(name ?: "") 

fun simpleFunction(name: String) { // name is not-null 
    ... 
} 

  • fun simpleFunction(name: String?) { 
        val actualName = name ?: "" 
        ... 
    } 
    
  • がNULL可能値を受け入れる別の関数のオーバーロードを作成し、関数本体の内部には、このチェックを実行します

関連する問題