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

Scala 3集合转换疑似Bug?PyList调用asScala失败问题

Scala 2与Scala 3中PyList调用asScala的差异问题

Scala 2.13.14测试

执行命令启动Scala环境:

scala-cli -j system -S 2.13.14 --dep org.python:jython-standalone:2.7.1b3

在交互环境中执行代码,可正常调用asScala:

scala> val x = new org.python.core.PyList
val x: org.python.core.PyList = []

scala> import scala.jdk.CollectionConverters._
import scala.jdk.CollectionConverters._

scala> x.asScala
val res0: scala.collection.mutable.Buffer[_] = Buffer()

Scala 3.3.3测试

执行相同启动命令:

scala-cli -j system -S 3.3.3 --dep org.python:jython-standalone:2.7.1b3

在交互环境中执行代码时出现错误:

Welcome to Scala 3.3.3 (21.0.3, Java OpenJDK 64-Bit Server VM).
Type in expressions for evaluation. Or try :help.

scala> val x = new org.python.core.PyList
val x: org.python.core.PyList = []

scala> import scala.jdk.CollectionConverters.*

scala> x.asScala
-- [E008] Not Found Error: -----------------------------------------------------
1 |x.asScala
  |^^^^^^^^^
  |value asScala is not a member of org.python.core.PyList
1 error found

关键说明

PyList是java.util.List的包装类,其Java定义如下:

public class PyList extends PySequenceList implements List {
  ....
}

测试Scala 3最新版本3.4.2时,该问题依旧存在。

临时解决方案

通过冗余类型转换可绕过该问题:

x.asInstanceOf[java.util.List[_]].asScala

内容的提问来源于stack exchange,提问作者david.perez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 08:02:38