使用.last仅访问Scala中的部分列表

时间:2013-12-04 20:22:35

标签: scala collections

我有以下代码

val result = hyp().filter(_._3)

其中hyp()返回List [(Int,Int,Set [Int])]并且filter仅用于返回集合包含单个元素的那些列表。 _._ 3访问Set(Int)部分。我怎样才能使用.last而不是_._ 3?感谢

3 个答案:

答案 0 :(得分:3)

你可以使用shapeless使这个漂亮(请注意我使用的是1.2.4版本):

  import shapeless.Tuples._
  val result = hyp().filter(_.hlisted.last.size == 1)

答案 1 :(得分:3)

使用模式匹配,它可能看起来像

val result = hyp().filter {
  case (_, _, x) => x.size == 1
}

答案 2 :(得分:0)

替代@kompot答案

val result = hyp().collect {
  case t @ (_, _, xs) if xs.size == 1 => t
}

这里我将整个元组绑定到t变量,如果最后一个元组有单个元素,我将它传递给结果集合