Я думаю, что это будет лучше объяснено с помощью примера
У меня есть класс case
case class Person(name: String = "no name", surname: String = "no surname")
И я хочу создать общую функцию для ее заполнения, например, json-сообщение, которое может не указывать все поля
Я знаю, что для использования значений по умолчанию простой ответ заключается не в том, чтобы передать их конструктору, но если у меня есть несколько полей, которые могут появляться или не появляться в json, мне придется использовать огромное предложение switch, охватывающее все возможная комбинация отсутствующих параметров. В этом случае, прочитав json, я должен позаботиться о имени и фамилии, имени, фамилии, имени и фамилии... (Надеюсь, я ясно дал понять).
Чтобы быть более точным, я пытаюсь создать функцию, которая позволяет мне создать человека из значений followgin json, используя значения по умолчанию, когда отсутствует какой-либо параметр
{ "name": "john", "surname": "doe" }
{ "surname": "doe" }
{ "name": "john" }
{ }
Вот почему я ищу более общий способ справиться с этим.
(Я покажу некоторый псевдо-код, чтобы дать представление о том, чего я пытаюсь достичь)
Я думал о чем-то вроде:
val p = Person(name= "new person name", surname= Unit)
И в этом случае фамилия должна получить значение по умолчанию
Или что-то вроде
val p = Person( Map( "name" -> "new person name" ) _* )
Так что он также принимает значение по умолчанию для фамилии
Или, может быть, это сделать в конструкторе, если я обнаруживаю нулевое значение (или None), я мог бы присвоить значение по умолчанию.
На самом деле я пытаюсь избежать повторения определения значений по умолчанию.
Во всяком случае, какой был бы самый идиоматический способ достичь такого?