У меня есть черта с двумя классами: C1, имеющая имя (String) и потомки (List of String), и C2, имеющая текст (String). По сути, я хочу выбрать все классы C2, чтобы получить текст в их строке. Однако эти классы C2 являются потомками классов C1. Например, это выглядит так: C1("first", List(C1("firstchild", List(C2("text"))))
.
Моя идея состояла в том, чтобы сделать рекурсивный случай совпадения, который останавливается, когда он находит класс C2, чтобы дать мне текст внутри него. Если вместо этого он находит класс C1, он начинает заново с потомками этого класса (затем, если он находит класс C2, он дает мне текст, и, если он находит класс C1, если он начинается с его потомков, et c.). Но я застрял, чтобы сделать рекурсивную часть. Я имею в виду, похоже, что случаи совпадений сделаны только для определенного типа, поэтому я должен сделать каждый случай единичным?
Есть мысли, пожалуйста?