如何在 Scala 中向枚举添加方法?

2024-01-01

在 Java 中你可以:

public enum Enum {
    ONE {
        public String method() {
            return "1";
        }
    },
    TWO {
        public String method() {
            return "2";
        }
    },
    THREE {
        public String method() {
            return "3";
        }
    };

    public abstract String method();
}

在 Scala 中如何做到这一点?

编辑/有用的链接:

  • https://github.com/rbricks/itemized https://github.com/rbricks/itemized
  • http://pedrorijo.com/blog/scala-enums/ http://pedrorijo.com/blog/scala-enums/

下面是通过扩展 Enumeration.Val 类向 scala 枚举添加属性的示例。

object Planet extends Enumeration { 
   protected case class Val(val mass: Double, val radius: Double) extends super.Val { 
     def surfaceGravity: Double = Planet.G * mass / (radius * radius) 
     def surfaceWeight(otherMass: Double): Double = otherMass * surfaceGravity 
   } 
   implicit def valueToPlanetVal(x: Value) = x.asInstanceOf[Val] 

   val G: Double = 6.67300E-11 
   val Mercury = Val(3.303e+23, 2.4397e6) 
   val Venus   = Val(4.869e+24, 6.0518e6) 
   val Earth   = Val(5.976e+24, 6.37814e6) 
   val Mars    = Val(6.421e+23, 3.3972e6) 
   val Jupiter = Val(1.9e+27, 7.1492e7) 
   val Saturn  = Val(5.688e+26, 6.0268e7) 
   val Uranus  = Val(8.686e+25, 2.5559e7) 
   val Neptune = Val(1.024e+26, 2.4746e7) 
} 

scala> Planet.values.filter(_.radius > 7.0e6) 
res16: Planet.ValueSet = Planet.ValueSet(Jupiter, Saturn, Uranus, Neptune) 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Scala 中向枚举添加方法? 的相关文章

  • while循环内的递归,它是如何工作的?

    你能告诉我这段java代码是如何工作的吗 public class Main public static void main String args Strangemethod 5 public static void Strangemet
  • Spring MVC 应用程序可以是多线程的,即使它的 servlet 不是吗?

    当您谈论 Spring 应用程序是多线程时 您是否一定是指该应用程序中定义的 servlet 是否是多线程的 或者即使应用程序中的 servlet 不是多线程 Spring 应用程序也可以配置为多线程吗 不再支持单线程 servlet 它们
  • Java程序验证signtool签名的数字签名

    我已经使用 SignTool 对文件 exe 或 dll 不是 jar 文件 进行了数字签名 Signtool还可以验证数字签名 但我的要求是使用java程序检查由signtool签名的文件的数字签名 我在互联网上搜索但没有找到任何信息 您
  • 使用 IntentService 使用 Camera2 拍照

    我正在尝试创建一个可以拍照但不显示预览的应用程序 使用本教程 https www youtube com watch v oPu42I0HSi4 https www youtube com watch v oPu42I0HSi4如果我使用和
  • Java 将 String[] 转换为 int[]

    我有一个 String 其中每个元素都可以转换为整数 将其转换为 int 的最佳方法是什么 int StringArrayToIntArray String s public static int StringArrToIntArr Str
  • Android Studio 中没有参考文档

    昨天刚刚出现了一个新问题 当我将鼠标悬停在方法上或按 Ctrl Q 时 我通常会获取该特定方法的文档信息 但现在我只是得到 按 Ctrl QSharedPreferences getLong Following external urls
  • 检查 jar 是否从 shell 运行

    我有一个 java jar 程序 我试图在我的机器启动时运行它 理想情况下 shell 脚本将每 60 秒检查一次以确保 jar 正在运行 我如何检查 jar 是否在 centos 上运行 这似乎不起作用 我当前的 sh 文件 bin ba
  • 如何在Intellij IDEA中复制maven依赖项到输出工件WEB-INF/lib?

    我知道在 eclipse maven 中可以将依赖项复制到 WEB INF lib 目录setting Deployment Assembly and Build Path 但是我怎样才能用 Intellij IDEA 实现这一点呢 好的
  • Java GUI,根据actionListener更改面板

    我在两个不同的面板中添加了两个按钮 如果单击第一个按钮 则需要转到下一个面板 其中包含第二个按钮 但是当我单击第一个按钮时 该按钮没有被替换 Java GUI import java awt event ActionEvent import
  • 如何知道 Solr Optimize 何时完成?

    我正在使用 Solr php client 通过 php 与 Solr 进行通信 这段代码触发solr优化命令 solr gt optimize 请问有没有什么方法可以确定优化完成了 这都是因为我的网站上有一个管理页面 我每天必须手动优化
  • 查找前 N 个五边形数

    我必须找到第一个N pentagonal numbers 1 从 1 100 并每行显示 10 个 我必须使用getPentagonalNumber int n 方法也是如此 显然这就是它存在的原因 到目前为止 这是我的代码 package
  • 使用 Gradle 构建 Kotlin + Java 9 项目

    我对 Gradle 老实说 还有 Java 9 相当陌生 我正在尝试使用 Gradle 构建一个混合了 Java 9 和 Kotlin 的简单库项目 更详细地说 Java中有一个接口 Kotlin中有一个实现 我会用 Kotlin 做所有事
  • Java 会话变量

    我听说有些人认为在会话中将信息存储在服务器上是一个坏主意 因为它不安全 因此 在多页面业务流程功能中 应用程序将数据写入数据库 然后在需要时检索信息 在会话中存储私人信息是否一定不安全 只要会话本身安全 在会话中存储属性就不存在安全风险劫持
  • 如何更改使用 Google ReCaptcha 版本 2 时的错误消息?

    当为 Google ReCaptcha 版本 2 选择多张照片时 会显示以下错误消息 需要多个正确的解决方案 请解决更多 如何将错误消息更改为我网站上的自定义消息 这是图像 我认为不可能在服务器端 在谷歌 进行 这可以在客户端通过利用 js
  • 在 Scala 中使用隐式的良好实践 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 是否有任何客观原因在代码中到处使用隐式参数只是为了缩短应传递的参数数量 我有一个 REST API 端点的每个调用都有一个唯一的 ID 应该在调
  • 从 Spring 启动运行 Java 类

    我使用的是Java8和Spring4 3 1 我有一个 Java Spring 应用程序托管由浏览器和移动应用程序客户端访问的 RESTfult 服务 其次 我编写了一个侦听事件的聊天服务器 socket io 来自客户 该聊天服务器正在从
  • Selenium 查看鼠标/指针

    有什么方法可以在运行测试时真正看到硒鼠标吗 要么是 Windows 光标图像 要么是某种点或十字线或任何东西 我正在尝试使用拖放功能selenium and java in an HTML5Web 应用程序 并且能够看到光标以了解它实际在做
  • 当列表中不存在 X 时,从列表中查找大于 X 的值

    我试图从列表中查找大于特定值 在我的情况下已知 的值 Example Given list 1 2 5 10 15 list is sorted 查找大于的值X 7在这种情况下 期望的结果 返回一个包含值的列表 10 15 我尝试使用jav
  • Scalaz 状态 monad 示例

    我还没有看到很多 scalaz 状态单子的例子 有这个例子 http scalaz github com scalaz scalaz 2 9 1 6 0 2 doc sxr scalaz example ExampleState scala
  • 这种说法是否恰当。 if (0 != 表达式或变量) {} 在java中? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi

随机推荐

  • 是否可以通过 .NET 代码对二进制文件进行签名? (没有signtool.exe)

    我有以下要求 使用证书签署二进制文件 但没有signtool exe 这个想法是通过代码来完成 你知道这是否可能吗 您将需要使用签名者签名 http msdn microsoft com en us library windows desk
  • 为什么 jquery ui 按钮在 Firefox 和 Chrome 中看起来不同

    我已经上传了一个示例页面https bobdn com Temp aspx https bobdn com Temp aspx 该页面只有一个 jquery UI 按钮 为什么这在 Firefox 中看起来有点大 填充和字体大小看起来都很大
  • SVG defs 上的鼠标事件(遮罩)

    背景图像上有 svg SVG 是一个中间有圆孔的正方形 作为示例 背景图像穿过圆圈出现 我想用鼠标拖动这个圆圈 但如何从 javascript 访问 svg 内的 defs 尚不清楚 我可以更改属性 但 onclick 事件对它们不起作用
  • jQuery + Ajax 哈希/历史记录等

    我正在尝试使用 jQuery 中的 URL 哈希来控制 Ajax 中的历史记录并使链接 页面可添加书签 我已经尝试了几乎所有插件 但似乎都无法正常工作 所以我实际上没有任何代码示例 但我愿意接受任何建议 信息 教程等 我试图将其合并到的其中
  • 类型提供程序可以作为参数传递给函数吗

    我正在学习 F 和FSharp 数据库 http fsharp github io FSharp Data 我有一个任务需要读取 20 个 CSV 文件 每个文件都有不同数量的列 但记录具有相同的性质 以日期字符串为键 所有其余列都是浮点数
  • 使用 EPPlus 复制/克隆 Excel 形状?

    是否可以使用 EPPlus 库在 Excel 工作表中创建形状的副本 克隆 我知道我可以得到一个现有的对象 var shapeExisting ws Drawings ShapeName ws是工作表对象 并创建新形状 var shapeN
  • CKEditor只读

    自从我使用 CKEditor 以来我遇到了一个问题 http ckeditor com http ckeditor com 问题是我找不到使编辑器只读的方法 而且我不能只使用文本区域 因为我想保持一致性 我已经在 StackOwerflow
  • 制作 Flash 游戏的可下载版本的最佳方法是什么?

    我已经用 Flash 制作了一款游戏 我想为那些宁愿离线玩的人提供一个简单的下载 事实是 我使用文件夹整体结构来动态加载每个级别的内容 文件夹结构看起来像这样 但这并不重要 游戏文件夹 animations 动画1 swf 动画2 swf
  • 使用 Apache POI 从 java 中的 excel 工作表读取数据

    我需要在 java 中读取 Excel 工作表中的数据 我能够读取普通字符串 但是当我尝试读取包含日期和时间的单元格 28 5 2018 10 00 时 我只得到日期为 2018 年 5 月 28 日 这是Excel单元格 此代码读取日期
  • NReco PDFGenerator 问题

    我已经使用这个工具大约一周了 现在 今天 它停止工作了 我已将其余代码恢复到之前的状态 但仍然出现相同的错误 我从抛出的异常中得到的所有信息是 NReco PdfGenerator dll 中发生 System Exception 类型的异
  • 在 Draft.js 中获取插入符位置(行号)

    如何获得 Draft js 中的插入符号位置 我想你可以从选择状态中获取块 然后获取块数组并查看块数组位于哪个位置 但我不确定这是一种可靠的方法 甚至是最好的方法 不确定这是否是您的意思 但您可以像这样获取当前块的索引 const curr
  • 为什么从命令提示符运行 JAR 文件时出现异常?

    您好 我使用 eclipse 上的导出选项制作了一个可运行的 JAR 文件 但是 当我通过命令提示符运行文件时 我得到以下信息 Exception in thread main java lang NoSuchMethodError at
  • Golang 歧义错误重新定义

    为什么可以redefine the err多变的 err ipdf Open source if err nil panic Couldn t open pdf payload err ioutil ReadFile other if er
  • 将大量数据从 iPad 转换/上传到 Dropbox

    我正在通过 Instruments 运行我的应用程序并使用大量数据对其进行压力来完成它 仪器测试进展顺利 但压力测试是我遇到问题的地方 在不涉及太多细节的情况下 我为我的应用程序提供了越来越多的Core Data它需要推断数据 制作图表并在
  • Angular 中的加密和 C# (.NET) 中的解密

    我有 Angular 中的数据加密代码 但我不知道如何在服务器端解密它 角码 public static getEncryptedInfo dataString string let password environment encrypt
  • 如何将 system.serviceModel 放入 ServiceConfiguration.cscfg (Windows Azure)

    我有以下代码 用于微软翻译
  • 在 Surfaceview 的画布上显示位图

    我正在尝试开发一个 Android 应用程序来显示可缩放 可平移的地图 这只是一个位图图像 它还允许用户单击地图上的某些点 我正在努力寻找实现此类应用程序的最有效方法 在尝试了许多其他方法 包括 Webviews OpenLayers 之后
  • LDAP:错误代码 49 - 简单绑定失败:NT_STATUS_LOGON_FAILURE

    我正在尝试对用户进行身份验证 但它抛出Exception 可能是配置有问题 public class LdapApplication private static final String INITIAL CONTEXT FACTORY c
  • 通过布尔属性使用“track by”过滤 Angular 1.2 ng-repeat

    我试图根据布尔属性的值过滤一些列表项 但无论我做什么 整个列表都会显示 我尝试过的一些东西已经损坏 没有任何显示 但这既不在这里也不在那里 我无法让我的过滤按预期工作 scope attendees firstname Steve last
  • 如何在 Scala 中向枚举添加方法?

    在 Java 中你可以 public enum Enum ONE public String method return 1 TWO public String method return 2 THREE public String met