2017-08-23 41 views
1

我寫下面的代碼。如何在kotlin中檢查方法

fun check(list){ list.forEach{ when(it){ 
    is Int -> something() 
    is String -> something() 
    //is method -> ??? 
    else -> consume{it} 
    }}} 

inline fun consume(f:() -> Unit){ f() } 

但我不想檢查其他方法。 有什麼辦法可以在什麼時候檢查方法?

回答

0

據我所知,你可以省略else -> consume{it}部分。 forEach函數的簽名是as follows

inline fun <T> Iterable<T>.forEach(action: (T) -> Unit) 

action。它採用Unit作爲輸出的功能。這意味着你不需要返回任何東西(Unit是Java的void等價物)。

所以,在總結你的代碼可以是這樣的:

fun check(list: List<*>) { 
    list.forEach { 
     when (it) { 
      is Int -> something() 
      is String -> something() 
      //is method -> ??? 
     } 
    } 
} 
+0

哦,我真的很抱歉,但是這不是我想要的。我想知道如何通過使用語法來區分方法。 –

+0

「辨別方法」是什麼意思? – Mibac

+0

我把該方法放入任何類型的數組中,我想使用該方法但是我不知道有沒有辦法區分方法。 –

0

我問的問題,但我結合答覆的內容,我處理了,和我連着,我試着結果去做。

var arr = arrayOf{"String", {method()}} 

fun check(arr : Array<Any?>?){ arr.forEach{ when(it){ 
    is Int -> println("int") 
    is String -> println("str") 
    else -> @Suppress("UNCHECKED_CAST") (it as() -> Unit)()  
}}} 

感謝

相關問題