我想根據它們的類型獲取每個水果的編號。顯然我需要以某種方式積累它們,但最好的/最乾淨的/ etc是什麼?根據Scala的類型來計算列表的元素
trait Fruit
case object Apple extends Fruit
case object Pear extends Fruit
case class Orange(variety: String) extends Fruit
val fruits = List(Pear, Apple, Pear, Pear, Apple, Orange("satsuma"), Orange("clementine"))
val numberOfOranges = ???
val numberOfApples = ???
val numberOfPears = ???
感謝
我喜歡這個解決方案,但是不是,這是可能的: val counts = fruits.groupBy case_:T => T } .map { case(key,values)=>(key,values, .size) } –
不,那不行。您無法對抽象類型進行模式匹配。儘管如此,你或許可以用反射來做些事情。 –