использование объекта в предложении match шаблона сопоставления в Scala - PullRequest
1 голос
/ 23 июня 2019

У меня есть такой код:

val s = someOtherObject.subObjects().size match {
  case size > 0 => "Size is greater than 0"
  case _ => "Size is less than 0"
}

Как мне присвоить значение someOtherObject.subObjects (). Size в предложении match переменной размера в операторе case

Должен ли я сделать:

val size = someOtherObject.subObjects().size
val s = size match {
  case size > 0 => "Size is greater than 0"
  case _ => "Size is less than 0"
}

Ответы [ 2 ]

2 голосов
/ 23 июня 2019
val s = size match {
  case x if x > 0 => ("Size is greater than 0", x)
  case x @ _ => ("Size is less than 0", x)
}

s будет кортежем (String, Int)

s._1 будет строковым сообщением

s._2 будет значением размера.

0 голосов
/ 23 июня 2019

Вы можете присвоить этой переменной имя и вернуть ее обратно так:

val s = someOtherObject.subObjects().size match {
  case size if size > 0 => size
  case size @ _ => size
}

Или вы можете просто использовать if выражения:

val size = someOtherObject.subObjects().size

val result = if(size > 0) {
  // Size is greater than zero
  size
} else {
  // Size is less than or equal to zero
  size
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...