如何比较元组值?

时间:2019-06-18 13:30:58

标签: scala tuples

我只有一个快速的语法问题,但找不到答案。 我有一个元组,例如(2,3),我想比较那些值。为了解决这个问题,我将其归结为一个具体的问题。

我试图这样做:

methodA

它不起作用。当我使用compareTo或类似的建议时,总是出现错误。由于我的代码更长,更复杂,所以我不能只使用if-else。模式匹配很有意义。 有人知道吗?感觉很简单,但我是Scala的新手。

3 个答案:

答案 0 :(得分:7)

这是两个基于匹配的解决方案:

def isNumberOneBigger(tuple: (Int,Int)): Boolean = tuple match {
  case (x1, x2) => x1 > x2
}

def isNumberOneBigger(tuple: (Int,Int)): Boolean = {
  val (x1, x2) = tuple
  x1 > x2
}

不匹配,是:

def isNumberOneBigger(tuple: (Int,Int)): Boolean =
  tuple._1 > tuple._2

这对我来说似乎很好。

答案 1 :(得分:1)

如果要继续使用模式匹配,可以编写以下代码

def isNumberOneBigger(tuple: (Int,Int)): Boolean ={
  tuple match {
    case x: (Int,Int)  if x._1 > x._2 => true
    case _ => false
  }
}

答案 2 :(得分:0)

您可以这样做:

def isNumberOneBigger(tuple: (Int, Int)): Boolean = tuple match {
    case (a: Int, b:Int) if (a > b) => true
    case _ => false
}

请注意添加case _ =>,否则,您将获得MatchError异常。

您可以稍微玩here