Подавить предупреждение "выброшено не по значению единицы"

Я добавил аргумент командной строки scalac -Ywarn-value-discard в мою сборку, потому что это поймало бы небольшую ошибку, которую я только что нашел в своем коде. Тем не менее, теперь я получаю несколько предупреждений о "отброшенном значении, не являющемся единицей", о намеренных сбросах, а не об ошибках. Как мне подавить эти предупреждения?

2 ответа

Решение

Вы подавляете эти предупреждения явно возвращая единицу (то есть ()). К примеру, включите это:

def method1() = {
   println("Hello")
   "Bye"
}
def method2() {
  method1() // Returns "Bye", whihc is implicitly discarded
}

в:

def method1() = {
   println("Hello")
   "Bye"
}
def method2() {
  method1()
  () // Explicitly return unit
}

Согласно этому ответу, вы также можете использовать синтаксис val _т.е.

def method2(): Unit = {
  val _ = method1()
}

Но есть некоторый спор о том, является ли этот или ответ @Régis предпочтительным стилем.

Теперь вы можете подавить предупреждение об отказе от значения, присвоив типу Unitв Scala 2.13.

Это пример:

def suppressValueDiscard(): Unit =
  "": Unit
Другие вопросы по тегам