2017-09-28 52 views
1

我想知道,這是否可能在Kotlin,如果是這樣,它是什麼正確的語法?埃爾維斯「如果」運營商在Kotlin作爲函數默認參數

如何修改函數的參數這樣:

  1. 有可能傳遞null值

  2. 檢查,如果傳遞null - >然後name = ""其他name = name

該怎麼辦?

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

我試圖

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

我只是wri te'val name = name?:「」',你會得到一個影子命名警告,但這是我發現的最好的解決方法,用於重新賦值'val'參數而不用更改變量名稱 – elect

回答

3

這是不可能的,至少這種方式,因爲在沒有參數的函數調用的位置通過僅應用於默認的參數。

你可以嘗試做以下操作之一:

  • 執行此項檢查函數體內的

    fun simpleFunction(name: String?) { 
        val actualName = name ?: "" 
        ... 
    } 
    
  • 創建一個單獨的函數重載接受空的值:

    @JvmName("simpleFunctionNullableName") 
    fun simpleFunction(name: String?) = simpleFunction(name ?: "") 
    
    fun simpleFunction(name: String) { // name is not-null 
        ... 
    }