Знаете ли вы какие-нибудь хорошие способы сделать несколько вещей в одной ветви дела?
Примерно так
case ANODE(NONLEAF, children, depth) =>
{println(" "*(16/depth)+"[]");
children.foreach(nodes_queue.enqueue(_))}
Этот код взят из моего дизайна функции, которая распечатывает дерево с использованием первого хода в ширину. Сопоставление с образцом позволяет мне понять, какой тип узла я печатаю. Поэтому мне кажется неизбежным делать разные вещи в одной и той же инструкции case (например, распечатать узел, затем поставить в очередь его дочерние элементы для последующей печати).
Компилятор жалуется на это. Я добавил фигурные скобки вокруг утверждений, но это не помогает.
Текущее решение, которое у меня есть для этого, состоит в том, чтобы использовать функцию для замены этих операторов и поместить вызов функции после стрелки (=>). Но это уродливо и многословно.
Я гуглил его и нашел только вопросы о "шаблоне, соответствующем нескольким условиям".
Есть ли у вас какие-либо идеи о том, как сделать это простым и понятным способом?
Ваша помощь будет принята с благодарностью.