Kotlin 如何使用“多个”筛选单个列表;个案;在科特林
我有一个密封类,如下所示:-Kotlin 如何使用“多个”筛选单个列表;个案;在科特林,kotlin,kotlin-extension,Kotlin,Kotlin Extension,我有一个密封类,如下所示:- sealed class SoundEffect { sealed class Acoustic : SoundEffect() { object Active : Acoustic() object Inactive : Acoustic() object Disable : Acoustic() object Enable : Acoustic() } sealed c
sealed class SoundEffect {
sealed class Acoustic : SoundEffect() {
object Active : Acoustic()
object Inactive : Acoustic()
object Disable : Acoustic()
object Enable : Acoustic()
}
sealed class Electronic(open val message: String) : SoundEffect() {
data class Moog(override val message: String) : Electronic(message)
}
sealed class Vocal(open val dataMap: MutableMap<String, Any>) : SoundEffect() {
data class Lieder(override val dataMap: MutableMap<String, Any> = mutableMapOf()) : Vocal(dataMap)
}
}
这种方法在科特林可行吗
如何指定
multipleFilter
函数?确切地说,此语法不起作用,带有的分支是…
只允许在时使用。但是为什么不为每个人提供一个
sounds.forEach {
when(it) {
is SoundEffect.Acoustic -> process(it)
is SoundEffect.Electronic -> process(it)
is SoundEffect.Vocal -> process(it)
}
}
(it
将在每个分支中进行智能强制转换,并最终调用正确的重载)确切地说,此语法不起作用,带有的分支是…
只允许在中当
时使用。但是为什么不为每个人提供一个
sounds.forEach {
when(it) {
is SoundEffect.Acoustic -> process(it)
is SoundEffect.Electronic -> process(it)
is SoundEffect.Vocal -> process(it)
}
}
(it
将在每个分支中进行智能转换,并最终调用正确的重载)在哪里定义了process()
?如果它是在SoundEffect
中定义的,那么好的老式多态性是否可以将所有这些都简化为sounds.forEach{it.process()}
?在哪里定义了process()
?如果它是在SoundEffect
中定义的,那么好的老式多态性能否将所有这些简化为sounds.forEach{it.process()}
?
sounds.multipleFilter {
is SoundEffect.Acoustic -> forEach { acoustic -> process(acoustic) }
is SoundEffect.Electronic -> forEach { electronic -> process(electronic) }
is SoundEffect.Vocal -> forEach { vocal -> process(vocal) }
}
sounds.forEach {
when(it) {
is SoundEffect.Acoustic -> process(it)
is SoundEffect.Electronic -> process(it)
is SoundEffect.Vocal -> process(it)
}
}