私は 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" )
}
Java のバックグラウンドを持っているので、これは初めての試みでした。のようなケース オブジェクトにアクセスすることは、button.Size.Mini
私にとって非常に自然なことのように思えます。しかし、クラスの内部ケース オブジェクトにアクセスできないようです。それらをクラスの下に配置してもSize
問題なく機能しますが、名前空間が混乱する結果になります。
何故ですか?この動作をどのようにモデル化しますか? これは、オブジェクトを拡張することでよりエレガントに行うことができますか(問題になるとEnumeration
思いました..)?toString