在Scala中使用字符串而不是成员的Dot运算符

时间:2017-02-06 16:07:41

标签: scala variables object case-class dot-operator

我有一个案例类:

case class abc (startDate:DateTime, endDate:DateTime)

在可以访问此object的其他case class中,而不是访问abc.startDate or abc.endDate, 我想要一个字符串告诉我它是开始还是结束日期。所以,

val decideStartOrEnd:String = "startDate"

现在我希望abc.startDate使用此字符串变量decideStartOrEnd

感谢任何帮助。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

您可以在scala中使用使用模式匹配来获取具体对象取决于字符串。

case class abc (startDate:LocalDate, endDate:LocalDate){

  def getTime(typeTime: String) : LocalDate = typeTime match {
    case "startDate" => startDate
    case "endDate" => endDate
    case _ => throw new IllegalArgumentException("Illegal argument")
  }

}

并像这样使用它

val decideStartOrEnd = "startDate"

val abe = abc(LocalDate.now(), LocalDate.now())

abe.getTime(decideStartOrEnd);

当然你可以输入:

abe getTime "startDate"