You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 07:31:06