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)
//...
}
}
我是 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)
//...
}
}