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

Kotlin数据结构与算法学习中example{}语法报错排查

核心结论

"xxx" example {} 既不是Kotlin内置语法,也不是已废弃的旧版语法,是《Kotlin Data Structures and Algorithms》配套示例代码中自定义的中缀扩展工具函数,仅作代码示例分隔、标识用,不是必须的语法规则。

报错原因
  1. 初始运行报红:项目中没有定义example这个中缀函数,IDE找不到对应声明自然报错。你直接去掉example包裹、保留内部代码能正常运行,也印证了这个结构只是外层辅助封装,不影响核心逻辑。
  2. 自行定义infix函数时报错:存在两处语法错误:
    • 函数声明语法错误:你在返回值类型的位置写了block(),Kotlin函数冒号后必须写合法的类型声明,执行逻辑要放在函数体的大括号内。
    • 不建议把中缀扩展函数定义在main函数内部,局部函数只能在定义它的作用域内调用,复用性差。
正确实现代码

把example函数定义为顶层函数(和main函数平级)即可正常使用:

// 自定义中缀扩展函数,给String类型加example方法,接收lambda代码块
infix fun String.example(block: () -> Unit) {
    // 可选:打印示例名称,方便区分控制台输出属于哪个示例
    println("\n--- Running example: $this ---")
    // 执行传入的示例代码
    block()
}

// 注意Node、LinkedList类需要你提前按照书中内容定义好
fun main() {
    "creating and linking nodes" example {
        val node1 = Node(value = 1)
        val node2 = Node(value = 2)
        val node3 = Node(value = 3)
        node1.next = node2
        node2.next = node3
        println(node1)
    }

    "push" example {
        val list = LinkedList<Int>()
        list.push(3)
        list.push(2)
        list.push(1)
        println(list)
    }
}
使用建议
  • 如果只是学习数据结构的核心实现逻辑,完全可以删掉example外层包裹,直接写内部代码即可,不会对功能造成任何影响。
  • 如果需要同时运行多个独立示例,想让控制台输出的归属更清晰,可以保留这个工具函数,还可以自行扩展添加执行耗时统计、输出分隔线等能力,提升调试效率。

内容的提问来源于stack exchange,提问作者David Jones

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 06:06:47