Kotlin数据结构与算法学习中example{}语法报错排查
核心结论
"xxx" example {} 既不是Kotlin内置语法,也不是已废弃的旧版语法,是《Kotlin Data Structures and Algorithms》配套示例代码中自定义的中缀扩展工具函数,仅作代码示例分隔、标识用,不是必须的语法规则。
报错原因
- 初始运行报红:项目中没有定义
example这个中缀函数,IDE找不到对应声明自然报错。你直接去掉example包裹、保留内部代码能正常运行,也印证了这个结构只是外层辅助封装,不影响核心逻辑。 - 自行定义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
相关产品推荐
相关产品推荐

