kotlin 你怎样才能模式匹配几个类型,其中之一是必需的,阿拉 rust 枚举?

rlcwz9us  于 2023-01-26  发布在  Kotlin
关注(0)|答案(1)|浏览(82)

我需要一个变量,它可以是几个不同类型的必需值之一。(假设是一个帖子、评论或社区)
在rust中,你可以拥有枚举数据结构,它可以有不同的类型,然后通过match语句提取它们的内部信息:https://doc.rust-lang.org/rust-by-example/custom_types/enum.html
我在Kotlin中找到的唯一可比较的东西,是Either类型,但这仅限于两个值,在Kotlin中有什么可比较的吗?

j2datikz

j2datikz1#

来自@IR42的建议起作用了,不像铁 rust 那么干净,但在这里:

sealed class ItemType {
  class PostItem(val item: Post): ItemType()
  class CommentItem(val item: Comment): ItemType()
}
...
val x = ItemType.PostItem(post)
when(x) {
  is ItemType.PostItem -> x.item.post ...
  is ItemType.CommentItem -> x.item.comment ...
}

相关问题