Java 有没有办法在Scala的方法参数中声明一组指定的值?
假设我有一个基于Java 有没有办法在Scala的方法参数中声明一组指定的值?,java,scala,methods,Java,Scala,Methods,假设我有一个基于状态的学生主题表查询的方法,这个状态可以是“失败”,“通过”,“正在进行” 我如何用一种方法而不是三种不同的方法来做? 我是否可以在方法参数中声明接受字符串的类型?仅使用traits和singleton sealed trait Status //sealed doesn't allow to extend this trait in another compilation unit case object Failed extends Status case object Pa
状态
的学生主题
表查询的方法,这个状态
可以是“失败”
,“通过”
,“正在进行”
我如何用一种方法而不是三种不同的方法来做?
我是否可以在方法参数中声明接受字符串的类型?仅使用traits和singleton
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库。只需使用traits和singleton即可
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。您能澄清一下您的意思吗?现在,听起来您正在寻找一种基于单个方法状态的查询方法(例如,
StudyDAO.byStatus(status:String)
)是的,类似这样,但我希望状态只接受特定的一组接受值@Seanvieiras Elliott指出,为什么不使用枚举?如果您想要字符串的子类(例如,type Status='failed'|'passed'|'consuming'
),那么您最可能寻找的概念是单例类型(但枚举应该可以很好地完成)。您可以使用,或者Java。您能澄清一下您的意思吗?现在,听起来您正在寻找一种基于单个方法状态的查询方法(例如,StudyDAO.byStatus(status:String)
)是的,类似这样,但我希望状态只接受特定的一组接受值@Seanvieiras Elliott指出,为什么不使用枚举?如果您想要字符串的子类(例如,type Status='failed'|'passed'|'consuming'
),那么您最可能寻找的概念是单例类型(但枚举应该可以)。