lambda 中的 Kotlin 多个过滤器,结果不同

Kotlin multiple filters in lambda, with different results

我是 Kotlin 的新手,偶然发现了这个简单的问题。我有一个事件流,我在其中使用这样的登录事件:

        mystream.events
            .filter { event -> event is UserLogin }.collectLatest { event -> handleLogin(event) } 

现在在同一个流中,我还可以接收到注销事件,我也想以相同的方式处理它 - 但通过调用不同的处理函数。

我可以复制相同的代码行来对注销事件执行相同的操作,但是有没有办法在相同的 lambda/block 代码中执行此操作。有点像 if/else?

我会为此使用 when 语句:

mystream.events.collectLatest { event ->
    when (event) {
        is UserLogin -> handleLogin(event)
        is UserLogout -> handleLogout(event)
        //...
    }
}