gpt4 book ai didi

scala - 如何在 Scala 中构建合适的命名空间?

转载 作者:行者123 更新时间:2023-12-01 12:46:48 28 4
gpt4 key购买 nike

我是 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 会成为一个问题......)?

最佳答案

如果要使用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" )
}

关于scala - 如何在 Scala 中构建合适的命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15115748/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com