我只有一个快速的语法问题,但找不到答案。 我有一个元组,例如(2,3),我想比较那些值。为了解决这个问题,我将其归结为一个具体的问题。
我试图这样做:
methodA
它不起作用。当我使用compareTo或类似的建议时,总是出现错误。由于我的代码更长,更复杂,所以我不能只使用if-else。模式匹配很有意义。 有人知道吗?感觉很简单,但我是Scala的新手。
答案 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