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

为何Scala REPL中定义的函数显示为Lambda而非<function01>?

Scala REPL显示Lambda实例而非<function01>的原因
  • 版本与JVM目标的差异:Scala 2.12及以后版本默认适配JVM 8+,使用JVM原生Lambda(基于invokedynamic指令)实现匿名函数。此时REPL显示的是JVM Lambda实例的运行时标识,比如Lambda$xxx@xxxx。而Scala 2.11及更早版本会将匿名函数编译为Scala自带的FunctionN类实例,REPL会输出<function01>这类格式化标识。

  • REPL toString逻辑变化:新版本Scala REPL直接输出JVM Lambda实例的默认toString结果,旧版本则调用Scala Function类的自定义toString方法,生成<functionN>格式的字符串。

  • 验证方法:

    • 切换到Scala 2.11或更早版本的REPL,重新定义函数即可看到<function01>输出。
    • 在新版Scala中,通过编译选项-target:jvm-1.7强制使用旧的函数实现,REPL也会恢复<functionN>的显示。

内容的提问来源于stack exchange,提问作者Catarina Nogueira

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 18:47:06