[英]How to filter remove None types from List[(String , Option[Int])]?
[英]What signature is expected for the filter function when you apply filter on a List[(String,Int)]?
這不會編譯
object TestFilter extends App {
val a = List(("orange",0), ("peach",1), ("apple",2), ("banana",3))
filter( (i:String,j:Int) => j % 2 == 0)
}
我收到以下錯誤:
Error:(6, 30) type mismatch;
found : (String, Int) => Boolean
required: ((String, Int)) => Boolean
我究竟做錯了什么 ?
預期的類型為Tuple2[String, Int]
Tuple2 。 為了完成第二個參數的過濾,您有2個選項: val a = List(("orange",0), ("peach",1), ("apple",2), ("banana",3)) a.filter{case (i,j) => j % 2 == 0}
或
val a = List(("orange",0), ("peach",1), ("apple",2), ("banana",3)) a.filter(_._2 % 2 == 0)
您的列表的類型為List[(String, Int)]
。 類型(String, Int)
是一個對( Tuple2
)。 這對是filter-function中的參數。
您可以用兩種方式編寫它。 第一種方法是這樣的:
list.filter(pair => pair._2 % 2 == 0)
您還可以在該對上使用模式匹配。 這將使您更接近所需的內容:
list.filter { case (i, j) => j % 2 == 0 }
a是Tuple2的列表:
val a = List(("orange",0), ("peach",1), ("apple",2), ("banana",3))
a.filter(t => t._2 % 2 == 0)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.