Чтобы проиллюстрировать мой вопрос, лучше в качестве примера: допустим, я хочу провести триатлон, в результате чего triathletes
должен Swim, Run, Cycle
, поэтому у меня есть 3 черты:
trait Swimmer {
abstract void swim()
}
trait Runner {
abstract void run()
}
trait Cyclist {
abstract void cycle()
}
Все эти черты вместе составляют Triathlete
:
trait Triathlete extends Swimmer, Runner, Cyclist {
}
, который может затем выполнить триатлон:
def triathlon(Triathlete triathlete) {
triathlete.run()
triathlete.cycle()
triathlete.swim()
}
В настоящее время я определяю DSL в groovy, и в этом случае использования, на самом деле не имеет смысла определять эту промежуточную черту Triathlete
. Так есть ли способ объявить triathlon
, используя Swimmer & Runner & Cyclist
?
Я не знаю, есть ли что-то в самом языке, чтобы сделать это, я думаю, есть способ сделать это с AstBuilder
или лайки, но я еще не достиг своего уровня groovy, чтобы реализовать что-то подобное, но я ищу что-то вроде этого
void triathlon(Swimmer & Runner & Cyclist triathlete) {
triathlete.run()
triathlete.cycle()
triathlete.swim()
}