私は下記の;-)Scalaのケースオブジェクト汚染
両方のクラスを説明してみましょうここでの問題は、とは、名前空間の分離がないのでADMINがあいまいであるということである
RoleGroup.scala
abstract class RoleGroup
case object ADMIN extends RoleGroup
case object MEMBER extends RoleGroup
MailSender.scala
abstract class MailSender
case object ADMIN extends MailSender
case object STAFF extends MailSender
case object ACCOUNTANT extends MailSender
パッケージcom.company.fooでありますケースのオブジェクト。 1つのパッケージにつき1つのユニークな名前のケースオブジェクトしか存在しないようです。
私は、関数a la mailADMIN、roleADMINなどに基づいてケースオブジェクトの名前を付けることができます。または、ちょうど適切な列挙型を作成し、ケースオブジェクトを忘れるべきですか?または、他のアプローチをとる? MailSender
ため
object RoleGroup {
sealed trait RoleGroup
case object ADMIN extends RoleGroup
case object MEMBER extends Rolegroup
}
と同様:
この場合、名前空間の汚染を心配することなく、 'RoleGroup.Admin'と' MailSender.Admin'を指定できるので、列挙を使うのは良い考えです。 – adelbertc
はい、それは行く方法、ちょうどオプションが何であるかを見ようとしているようです。たぶんケースオブジェクトは、ローカルスコープでのみ使用されることを意図しているか、名前の衝突の可能性がない場所で使用されることを意図しています。 – virtualeyes