私は知っている、 "循環依存性は悪い設計です"しかし、私はこの場合は正当だと思います。円の依存関係(Voronoi Halfedge)
ボロノイ図を作成するとき、セルを「ハーフエッジ」と呼ばれるものに分割します。これにより、図を簡単にトラバースすることができます。
とにかく、ハーフエッジをインスタンス化するには、ミラーまたはハーフエッジの双子を指定する必要があります。
これはどの言語でもファンキーですが、Kotlinではvalの代わりにnull値のvarを使用する必要があるため、Kotlinではさらに迷惑になります。
今私は好きではないこのファンクをやっています。
val mirrorEdge: HalfEdge
get() = halfEdge!!
private var halfEdge: HalfEdge? = null
fun setMirror(halfEdge: HalfEdge) {
this.halfEdge = halfEdge
}
//他の場所
newEdge.setMirror(newEdge2)
newEdge2.setMirror(newEdge)
halfedgeミラーがnullになることはありません、と不変でなければなりませんが、私は自分のコードでその意図を伝えるためにどのように表示されません。