Я хочу иметь класс, который имеет ряд полей, таких как String, Boolean и т. д., и когда класс построен, я хочу иметь имя поля, связанное с каждым полем, и проверять поле (используя регулярное выражение для строк). В идеале я хотел бы просто указать в конструкторе, что параметр должен соответствовать определенным критериям.
Некоторый пример кода того, как:
case class Data(val name: String ..., val fileName: String ...) {
name.verify
// Access fieldName associated with the name parameter.
println(name.fieldName) // "Name"
println(fileName.fieldName) // "File Name"
}
val x = Data("testName", "testFile")
// Treat name as if it was just a string field in Data
x.name // Is of type string, does not expose fieldName, etc
Есть ли элегантный способ добиться этого?
РЕДАКТИРОВАТЬ: я не думаю, что смог четко понять, что мне нужно. У меня есть класс с рядом строковых параметров. Каждый из этих параметров должен быть проверен определенным образом, и я также хочу, чтобы строка fieldName была связана с каждым параметром. Однако я хочу по-прежнему иметь возможность обрабатывать параметр, как если бы это была обычная строка (см. пример).
Я мог бы закодировать логику в Data и в качестве метода применения объекта-компаньона Data для каждого параметра, но я надеялся получить что-то более общее.
fieldName
? Вы всегда можете добавитьprivate val
в телоcase class
, если этого достаточно. - person Randall Schulz   schedule 14.02.2013