在kotlin中如何检查方法

时间:2017-08-23 01:21:30

标签: 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() }

但我不想在其他方面检查方法。 有没有办法在什么时候检查方法?

2 个答案:

答案 0 :(得分:0)

据我所知,你可以省略else -> consume{it}部分。 forEach函数的签名为enter image description here

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 -> ???
        }
    }
}

答案 1 :(得分: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)()       
}}}

感谢