Я довольно новыми для Скале, и я хочу, чтобы разобрать список тематических классов:список Разбор конкретных классов
abstract class D
case class D0(a: Int, b: Int) extends D
case class D2(c: String, d: Int) extends D
case class D3(e: Int, f: String) extends D
case class D4(e: String, f: String, g: Int) extends D
Я хочу, чтобы разобрать экземпляр List [D]. Существует в списке специальный заказ, который можно объяснить BNF-подобная нотация:
rep(D0 -> D4 -> rep(D2 -> opt(rep(d3))))
D0 следует D4 следует 1-н D2, каждый из D2 затем 1-н D3 и т.д. ...
Я хочу, чтобы создать список типа:
type T0 = (D0, D4, List[(D2, List[D3])])
Все решения, которые я нашел до сих пор уродливы и statefull. Как опытный разработчик scala реализует это?
Спасибо
Что вы разбираете из? I.e., каков ваш формат ввода? – sjrd
«Список [D]» - это не то же самое, что и предлагаемая вами структура. Список - это список. Ваша структура - это нечто другое. – Daenyth
Список [D] импортируется из базы данных, основанной на файлах, с разными типами записей, реализующими иерархическую модель базы данных. – Volker