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

Scala枚举类型变量创建失败及枚举值获取问题咨询

Scala Enumeration 常见问题解答

问题1:为什么val j:J会报错?

咱们拆解下这两个错误的原因:

  1. not found: type J:你在枚举对象里定义的type J = Value是个内部类型别名,它属于J这个对象的作用域。直接写J的话,编译器找不到这个类型——你得明确告诉它这个类型来自J对象才行。
  2. only classes can have declared but undefined members:Scala里顶级变量或局部变量必须初始化,你只声明了val j:J却没赋值,这不符合语法规则,只有抽象类的抽象成员才允许只声明不定义。

给你两种解决写法:

  • 直接带上对象前缀指定类型:
    val j: J.J = J.Fail
    
  • 先导入枚举里的类型别名和成员,简化代码:
    import J._
    val j: J = J.Fail // 这里的J就代表J.Value类型了
    

问题2:如何验证Fail的实际值是0?

Scala的Enumeration给每个枚举成员内置了id属性,默认第一个成员的id是0,后续成员依次递增1。你直接访问这个属性就能验证:

// 打印Fail的id
println(J.Fail.id) // 控制台会输出0

// 顺便查看Success的id
println(J.Success.id) // 输出1

要是需要自定义id,你也可以在定义成员时手动指定,比如val Fail = Value(10),这时候它的id就变成10了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:22:53