Как мне сравнить значения кортежей? - PullRequest
0 голосов
/ 18 июня 2019

У меня просто быстрый вопрос о синтаксисе, и я не могу найти ответ. У меня есть кортеж, например (2, 3), и я хочу сравнить эти значения. Ради вопроса я свел его к одному конкретному случаю с проблемой.

Я пытался сделать это так:

def isNumberOneBigger(tuple: Tuple): Boolean = tuple match {
      case tuple._1 > tuple._2 => true
}

Это не работает. Когда я использовал CompareTo или подобные предложения, я всегда получал ошибку. Поскольку мой код немного длиннее и сложнее, я не могу просто использовать if-else. Сопоставление с образцом имеет большой смысл. Кто-нибудь знает? Это так просто, но я новичок в Scala.

Ответы [ 3 ]

7 голосов
/ 18 июня 2019

Вот два решения на основе сопоставления:

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 голос
/ 18 июня 2019

Если вы хотите продолжить использовать сопоставление с образцом, вы можете написать следующий код

def isNumberOneBigger(tuple: (Int,Int)): Boolean ={
  tuple match {
    case x: (Int,Int)  if x._1 > x._2 => true
    case _ => false
  }
}
0 голосов
/ 18 июня 2019

Вы можете сделать:

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

Обратите внимание, чтобы добавить case _ => в противном случае вы получите MatchError исключение.

Вы можете "поиграть" с ним немного здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...