扩展和减少的 Kotlin 等价物

Kotlin equivalent for extensions and reduce

我正在尝试将 swift 中的 class 移植到 Kotlin。有没有一种 Kotlin 方法来实现扩展和减少状态(获取状态)

public final class MutateNode {
public var onSubscribe: (() -> Void)?
public var onPublish: ((State) -> Void)?
public var leafs: [Node]

public init(leafs: [Node], onSubscribe: (() -> Void)? = nil, onPublish: ((State) -> Void)? = nil) {
    self.leafs = leafs
    self.onPublish = onPublish
    self.onSubscribe = onSubscribe
}
}

extension MutateNode: ControlNode {
public var state: AnyPublisher<State, Never> {
    guard !leafs.isEmpty else {
        return Just(.failure)
            .eraseToAnyPublisher()
    }
    return leafs.reduce(into: Just(.failure).eraseToAnyPublisher()) { (resultPublisher, nextChild) in
        resultPublisher = resultPublisher.flatMap { state in
            state == .success ? Just(state).eraseToAnyPublisher() : nextChild.state.eraseToAnyPublisher()
        }.eraseToAnyPublisher()
    }
    .handleEvents(
        receiveSubscription: { [weak self] _ in self?.onSubscribe?() },
        receiveOutput: { [weak self] state in self?.onPublish?(state) }
    )
    .eraseToAnyPublisher()
}

}

Kotlin 不支持扩展 class 以追溯添加接口。例如,参见

Combine 的 Kotlin 等价物是 Flow. It does include a reduce operator