Tai*_*aig 3 enums scala namespaces inner-classes case-class
我是 Scala 新手,现在正在创建我的第一个枚举(带有要覆盖的案例类toString)。
package views.helper.button
abstract sealed class Size(identifier: Option[String])
{
def this(identifier: String) = this( Some( identifier ) )
override def toString: String = identifier match
{
case Some( identifier ) => "btn-" + identifier
case _ => ""
}
case object Mini extends Size( "mini" )
case object Small extends Size( "small" )
case object Default extends Size( None )
case object Large extends Size( "normal" )
}
Run Code Online (Sandbox Code Playgroud)
这是我有 Java 背景的第一次尝试。访问案例对象button.Size.Mini对我来说似乎很自然。但看起来我无法访问类的内部案例对象。将它们放在Size类下面可以正常工作,但会导致命名空间混乱。
这是为什么?您将如何模拟这种行为?这可以通过对象扩展来完成得更优雅吗Enumeration(我认为这toString会成为一个问题..)?
如果要使用case类,需要将case对象放在Size的伴生对象中(相当于静态可见性)
package views.helper.button
abstract sealed class Size(identifier: Option[String])
{
def this(identifier: String) = this( Some( identifier ) )
override def toString: String = identifier match
{
case Some( identifier ) => "btn-" + identifier
case _ => ""
}
}
object Size {
case object Mini extends Size( "mini" )
case object Small extends Size( "small" )
case object Default extends Size( None )
case object Large extends Size( "normal" )
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3346 次 |
| 最近记录: |