2017-02-06 6 views
0

У меня есть случай класса как:Dot оператор строки вместо члена в Scala

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

В другом object, которые могут получить доступ к этой case class, вместо доступа abc.startDate or abc.endDate, Я хотел бы иметь строку, говорит мне, является ли это начальной или конечной датой. Так,

val decideStartOrEnd:String = "startDate" 

Теперь я хотел бы получить abc.startDate используя эту строку переменной decideStartOrEnd.

Любая помощь приветствуется. Спасибо заранее.

ответ

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" 
+0

Вам нужен 'приема всей' шаблон для вашей строки матч: случай _ => выбросить новое исключение IllegalArgumentException –