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

为何创建Seq实例得到List?解析Scala背后的实现机制

Scala中Seq()返回List实例的实现机制

你看到的Seq[Int]()并非直接初始化Seq trait(毕竟trait确实无法直接实例化),这背后是Scala的语法糖和伴生对象设计在起作用:

  • 语法糖的实际映射:Seq[Int]()这种写法是Scala的语法糖,实际调用的是Seq伴生对象的apply方法,也就是Seq.apply[Int](),而非尝试构造trait的实例。
  • 伴生对象的默认实现选择:Scala标准库中,Seq的伴生对象apply方法被设计为返回List实例——List是不可变Seq的轻量、高效默认实现,完全符合Seq的抽象定义。不管是空序列Seq()还是带元素的Seq(1,2,3),默认都会生成List实例。
  • 指定其他实现的方式:如果需要使用Vector、ArrayBuffer等其他Seq实现,直接调用对应类的构造方法即可,比如Vector[Int](),也可以通过Seq.newBuilder[Int].result()这种方式指定构建器生成目标实例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 11:05:16