【问题标题】:How to add a dot in scala enums values如何在scala枚举值中添加一个点
【发布时间】:2015-12-12 23:18:46
【问题描述】:

我有一个关注者enum

object TestKeys extends Enumeration{

    type  TestKeys = Value
    val _id , uuid Status.Date= Value
}

我需要在StatusDate 之间添加点,但 Eclipse 不允许我。我已经做了一些研究和here。我发现c# 中有一个DescriptionAttribute 但它在 Scala 中不起作用请帮助我如何在我的枚举值中添加点

【问题讨论】:

    标签: scala enums scala-2.11


    【解决方案1】:

    可以在名称周围使用反引号:

    scala> object TestKeys extends Enumeration{
               type  TestKeys = Value
               val _id, `Status.Date` = Value
           }
    defined object TestKeys
    

    但请注意,有一些意想不到的副作用:

    scala> TestKeys.withName("Status.Date")
    java.util.NoSuchElementException: No value found for 'Status.Date'
      at scala.Enumeration.withName(Enumeration.scala:124)
      ... 33 elided
    
    scala> TestKeys.withName("Status$u002EDate")
    res7: TestKeys.Value = Status$u002EDate
    
    scala> TestKeys.values
    res8: TestKeys.ValueSet = TestKeys.ValueSet(_id, Status$u002EDate)
    

    JavaIndentifier 中不能有 .

    scala> Character.isJavaIdentifierPart(46)  // 46 is '.'
    res16: Boolean = false
    

    【讨论】:

    • 这是什么 $u002E ?你能解释一下吗
    • @user3801239:u002E 是点 . 的 unicode 值。您可以通过在 Scala 控制台中运行 '\u002E'.toChar 来检查这一点。至于$,它用于在String 内插入一个scala 值。
    • 您可以使用以下结构修复withNameval `Status.Date` = Value("Status.Date")
    【解决方案2】:

    如果我理解正确,您需要一种在 Scala 中用点编写标识符的方法。如果是这种情况,您可以尝试类似:`Status.Date`。

    object TestKeys extends Enumeration{
        type  TestKeys = Value
        val _id , uuid, `Status.Date` = Value
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多