Kotlin如何检查变量是否为函数类型?
Kotlin中如何检查变量是否为函数类型?
你遇到的错误确实是因为fun不是合法的类型标识,Kotlin的函数类型有明确的语法格式,不能直接用is fun来判断。下面是两种正确的实现方式:
1. 检查特定的函数类型
如果你明确要判断的是某一种具体的函数类型(比如接收Int返回Int),可以直接在is后面写完整的函数类型签名:
fun operation(): (Int) -> Int { return ::square } fun square(x: Int) = x * x fun main() { val func = operation() when (func) { is (Int) -> Int -> println(func(2)) else -> println("Not a function") } }
2. 检查任意函数类型
Kotlin中所有函数类型都对应FunctionN系列接口(N代表参数个数),比如单参数函数对应Function1,双参数对应Function2。如果想匹配任意单参数函数,可以这样写:
fun operation(): (Int) -> Int { return ::square } fun square(x: Int) = x * x fun main() { val func = operation() when (func) { is Function1<*, *> -> println(func(2)) else -> println("Not a function") } }
这里的*是通配符,代表匹配任意参数类型和返回类型。如果要匹配多参数函数,对应替换成Function2、Function3即可。
内容的提问来源于stack exchange,提问作者Kevin Hasse
相关产品推荐
相关产品推荐

