Я знаю, что «круговая зависимость - плохой дизайн», но я думаю, что в этом случае это оправданно.Циркулярная зависимость (Voronoi Halfedge)
При построении диаграммы voronoi ячейки делятся на так называемые «половинные края», это позволяет вам удобно перемещать диаграмму.
В любом случае, чтобы создать экземпляр полузадачи, я должен указать зеркало или двойник полузадачи.
Это фанки на любом языке, но в Котлине это еще более раздражает, потому что я должен использовать nullable var вместо val, как я бы предпочел.
Прямо сейчас я делаю эту мелодию, которая мне не нравится;
val mirrorEdge: HalfEdge
get() = halfEdge!!
private var halfEdge: HalfEdge? = null
fun setMirror(halfEdge: HalfEdge) {
this.halfEdge = halfEdge
}
// в другом месте
newEdge.setMirror(newEdge2)
newEdge2.setMirror(newEdge)
halfedge зеркало никогда не может быть пустым, и должны быть неизменны, но я не вижу, как сообщить, что намерение в моем коде.