Я в ситуации, когда получаю структуру данных дерева извне, которая может иметь несколько разных форм. Мне нужно сделать случай с сортировкой в зависимости от того, какое дерево я получаю. Код я пишу начинает выглядеть следующим образом:Как кратко проверить нули в длинной цепочке методов в Scala?
val first = Option(root.getA)
.flatMap(o => Option(o.getB))
.flatMap(o => Option(o.getC))
...
val second = Option(root.getA)
.flatMap(o => Option(o.getD))
.flatMap(o => Option(o.getE))
...
first.getOrElse(second.getOrElse...
«первый» проверяет, является ли дерево имеет форму корне-> A-> B-> C ..., «второй» проверяет, является ли дерево имеет форму root-> A-> D-> E ... и т. д. Я чувствую, что должен быть более простой способ выразить эту идею в коде, поскольку весь этот код выполняет проверку нуля на каждом шаге путем упаковки и разворачивания параметров, но я не могу его найти.
Единственные реальные изменения Я сделал то, что я заменил такие вещи, как «CompilationUnit», «ClassDeclaration», «InterfaceDeclaration» и т. Д. A, B и C. (Узел-классы происходят из ANTLR генератора парсера.) –