gpt4 book ai didi

scala - Scala列表和子类型

转载 作者:行者123 更新时间:2023-12-04 13:14:02 27 4
gpt4 key购买 nike

我希望能够引用一个包含子类型的列表,并从该列表中拉出元素并隐式转换它们。示例如下:

scala> sealed trait Person { def id: String }
defined trait Person

scala> case class Employee(id: String, name: String) extends Person
defined class Employee

scala> case class Student(id: String, name: String, age: Int) extends Person
defined class Student

scala> val x: List[Person] = List(Employee("1", "Jon"), Student("2", "Jack", 23))
x: List[Person] = List(Employee(1,Jon), Student(2,Jack,23))

scala> x(0).name
<console>:14: error: value name is not a member of Person
x(0).name
^

我知道 x(0).asInstanceOf[Employee].name,但我希望类型有更优雅的方式。提前致谢。

最佳答案

最好的方法是使用模式匹配。因为您使用的是密封特征,所以匹配将是详尽无遗的,这很好。

x(0) match { 
case Employee(id, name) => ...
case Student(id, name, age) => ...
}

关于scala - Scala列表和子类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14681225/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com