我写了下面的代码。
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 :(得分:0)
据我所知,你可以省略else -> consume{it}
部分。 forEach
函数的签名为:
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)()
}}}
感谢