Матрица совпадений Scala класс дел, захватывающий только одно поле - PullRequest
5 голосов
/ 27 марта 2020

У меня есть оператор сопоставления с классом дел с большим количеством полей. Могу ли я захватить одно из полей по имени и игнорировать остальные, не указывая другие в позиции с подчеркиванием? Это особенно трудно сделать, когда то, что я хочу, глубоко вложено.

Вот что у меня есть сейчас:

record match {
  case MyRecordType(_, _, _, MyNestedType(_, _, namedFieldAsVar, _), _, _, _) => 
    doStuffWith(namedFieldAsVar)

Я хотел бы сделать что-то вроде этого:

record match {
  case MyRecordType { nested = MyNestedType { namedFieldAsVar } } => 
    doStuffWith(namedFieldAsVar)
}

Другие языки поддерживают такой тип сопоставления с шаблоном, как показано ниже (Rust), предлагает ли Scala нечто подобное?

match record {
  MyRecordType { named_field_as_var, .. } => do_stuff_with(named_field_as_var)
}
...