java - 有没有办法在 Scala 中的方法参数中声明一组指定的值?

标签 java scala methods

假设我有一种方法可以根据 status 获取 student_subject 表查询,并且此 status 可能是“失败” “已通过”“正在进行”

如何使用一种方法而不是 3 种不同的方法来完成此操作? 是否可以在方法参数中声明接受什么类型的String

最佳答案

只需使用特征和单例

sealed trait Status //sealed doesn't allow to extend this trait in another compilation unit
case object Failed extends Status
case object Passed extends Status
case object Ongoing extends Status

def getStidentSubject(status: Status) = status match {
   case Failed => ...
   case Passed => ...
   case Ongoing => ...
}

或者,您可以只匹配字符串,但它的类型安全性要差得多。

如果您需要 Scala 中更多类似枚举的功能(保留 ADT 的优势),我建议您使用 Enumeratum 库。

关于java - 有没有办法在 Scala 中的方法参数中声明一组指定的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43314026/

相关文章:

java - 如何使用 hibernate validator 检查枚举中的值是否可用

scala - 在 Scala 中调用柯里化(Currying)函数?

java - 难以理解构造函数以及在另一个类中调用它们的原因

c# - 同一类型的多个参数的编译时方法调用验证

Java 泛型通配符 : <? extends Number> vs <T extends Number>

javac代码消除功能

java - JMeter错误: jmeter.线程.JMeterThread : Test failed! java.lang.NoSuchFieldError:实例

Scala:用 val 覆盖 def

scala - 光滑 3 : how to drop and take on collections with some relations

javascript - 如何在使用 vue.js 更改另一个表单字段时有条件地重置表单字段