访问者模式对树进行递归查找


fun <T, ID> CrudRepository<T, ID>.visit(start: ID?, visitor: (T) -> Boolean) where T: TreeNode<ID> {
    var currentId = start
    do {
        val node = findByIdOrNull(currentId!!)
        if (node != null) {
            if (!visitor(node)) {
                break
            }
        }
        currentId = node?.getParentId()
    } while (node != null && !node.isRoot())
}


posted @ 2022-12-28 09:29  Acaak  阅读(16)  评论(0)    收藏  举报