Scala/Java 枚举

2024-03-20

我读了this https://stackoverflow.com/questions/1321745/scala-doesnt-have-enums-what-to-use-instead-of-an-enum and this https://stackoverflow.com/questions/1898932/case-classes-vs-enumerations-in-scala,但我仍然不明白在 Scala 中执行此操作的(惯用)等效方法

enum Status { 
    OK(1, "Ok", "Okay"),
    NOT_OK(5, "Not Ok", "Not Okay")
    BAD(10, "Bad", "Run for your life")

    int code;
    String name;
    String description; // custom fields

    Status(int code, String name, String description) {
        this.code = code;
        this.name = name;
        this.description = description;
    }
}

class Main {
    public static void main(String[] args) {
        for(Status status : Status.values) { // iterate through them
            doStuff(status);
        }
    }

    private doStuff(Status status) {
        System.out.println(status.description);
        // and more
    }
}

在 Scala 中,您可以创建一个类似于 Java 中的“enum”的枚举结构。基本上,您需要做的只是扩展scala.枚举类 http://www.scala-lang.org/api/current/index.html#scala.Enumeration如果您需要一个更复杂的类作为枚举,则可以扩展 Val 类。否则,您可以使用默认的 Val 类,它接受 Int 或 String 或两者。下面是 Java 代码的 Scala 版本。

object Status extends Enumeration {

  case class StatusVal(code: Int, name: String, description: String) extends Val

  val OK = StatusVal(1, "Ok", "Okay")
  val NOT_OK = StatusVal(1, "Not Ok", "Not Okay")
  val BAD = StatusVal(1, "Bad", "Run for your life")
}

object Application extends App {
  Status.values foreach (s => println(s.asInstanceOf[StatusVal].description))
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Scala/Java 枚举 的相关文章

随机推荐

  • 如何使用 Material-UI 将版式主题默认值应用于常规标签?

    所以 我读过https material ui com style typography https material ui com style typography 我正在加载 Roboto 字体 我希望有一个简单的组件 例如 const
  • 如何在滚动视图内设置谷歌地图片段

    我想在垂直方向上设置一个 Google 地图片段ScrollView 当我这样做时 地图不会垂直缩放 如何覆盖触摸事件侦听器MapView在听者之上ScrollView 这是我的 xml 代码
  • 如何在 SwiftUI 中将布尔表达式转换为 Binding

    我有一个文本字段 当用户输入特定字符串时我试图转到另一个视图 import SwiftUI struct ContentView View State var whether go No var body some View TextFie
  • 追踪 Windows 服务中的 stackoverflow 错误

    我对我的一个 Windows 服务做了一个小调整 然后运行它并得到了 描述 由于堆栈溢出 进程被终止 所以我回到旧版本并运行它 但仍然收到 stackoverflow 错误 最糟糕的是我已经调试了两者并且我没有再次出现此错误 如何 什么是找
  • 如何按比例调整WPF Listview的大小?

    我在调整 Listview 控件大小时遇到 了一些问题 我打算根据窗口的实际大小按比例调整大小 对于 Listview 的初始大小 其大小为 300 X 600 宽度 X 高度 以像素为单位 我也设置了它最大高度到 750 但其宽度保持不变
  • 如何将 jquery 样板转换为 require 样板?

    如何将 jquery 命名空间插件转换或放入 require 样板中 例如 这通常是我的标准 jquery 样板 A namepace structure function Initial setting var pluginName BR
  • 提供者 Oracle 与实体框架不支持删除数据库

    我正在使用模型优先方法和 Oracle 数据库 更新2 现已修复 关于包括seed数据 我收到此错误 提供商不支持删除数据库 UPDATE1如果我更改种子数据类型 public class MySeedData DropCreateData
  • 这意味着什么:应该显式设置“android:fullBackupContent”以避免备份 GCM 设备特定的 regId?

    这个 Lint 警告是什么意思 应显式设置 android fullBackupContent 以避免备份 GCM 设备特定的 regId 我已经用谷歌搜索但还没有找到任何东西 的一部分令人不安的 https commonsware com
  • Windows 7 OCR API

    我一直在审查 Office 2007 MODI OCR 的替代品 OneNote 2010 解决方案的质量 结果低于 2007 我注意到 一旦您安装了可选 tiff 过滤器 http technet microsoft com en us
  • 用于创建外部表的 BigQuery Node.js api

    我正在尝试使用 node js API 从 google 云函数创建外部表 该函数将从 GCS 存储桶变化触发 我可以创建本机表 但不能创建外部表 在node js api中进行导入here https googlecloudplatfor
  • 如何在 SDL 中创建颜色渐变

    SDL 没有这样的功能 很好奇过去是否有人做过并且不介意引导我走向正确的方向 我想在两种颜色之间创建渐变以反映在矩形的高度上 只需在所需的 y 位置上进行循环即可 通过在渐变的端点颜色之间进行插值来计算所需的颜色 Call SDL SetR
  • JSON解析多个key

    我有以下 JSON 字符串 var jsonString J 4 0 M J 5 0 N 如果我使用 jquery parseJSON jsonString 解析它 我得到 J 5 0 N 问题 1 jsonString是否格式错误 2 是
  • 将方法提升为 Scala 中的函数值

    Scala 库是否提供将给定类型的方法提升为函数值的支持 例如 假设我想举起String length 我可以写 val f String gt Int length or val f s String gt s length 然而 这种语
  • Python 中的视频和语音聊天可操作性

    我正在尝试寻找有关 Python 中视频和语音聊天可操作性的资源 有人知道一些好的资源或示例项目吗 任何帮助将不胜感激 如果你想要更高层次的东西你可以尝试Empathy http live gnome org Empathy 它具有 pyt
  • ElasticSearch 映射不起作用

    我正在尝试为各个字段使用不同的分析器设置 ElasticSearch 索引 但是 我似乎找不到设置特定领域分析器的方法 这是我创建 测试 索引的方法 curl XPOST localhost 9200 twitter curl XPUT h
  • 标记活动 Clear Top 会破坏目标活动而不是创建它

    我正在观察 Intent FLAG ACTIVITY CLEAR TOP 的行为 例如我有三项活动 A B C 现在流程是A gt B gt C 现在 当我使用以下代码从 C 开始使用此标志时 Intent intent to a new
  • hadoop和hbase的最新兼容版本

    我必须在4台机器上安装hadoop和hbase 我找到了最新版本hadoop 2 6 0 and hbase 0 98 9 hadoop2 bin 1 它们兼容吗 2 我应该如何在4台机器上安装hbase和hadoop 即有多少个maste
  • 组合枚举 C++

    在我的项目中 我有几个与此类似的枚举声明 enum Comparison LT lt GT gt EQ LTEQ lt GTEQ gt NEQ enum Arithmetic ADD SUB MUL DIV MOD 我想将其中的几个组合成一
  • 如何注入 jQuery 并在同一个书签中使用它?

    我可以使用以下书签成功地将 jQuery 注入到页面中 javascript void function doc if typeof jQuery undefined var script jQuery document createEle
  • Scala/Java 枚举

    我读了this https stackoverflow com questions 1321745 scala doesnt have enums what to use instead of an enum and this https