WartRemover's NonUnitStatements
requires that statements that aren't returning unit must have an assignment. OK, but sometimes we have to use annoying Java APIs that both mutate and return a value, and we don't actually hardly ever care about the returned value.
So I end up trying this:
val _ = mutateSomething(foo)
But if I have multiple of these, _
is actually a legit val that has been assigned to, so I cannot reassign. Wartremover also rightly will admonish for gratuitous var-usage, so I can't just do var _ =
.
I can do the following (need the ;
to avoid Scala thinking it is a continue definition unless I add a full newline everytime I do this).
;{val _ = mutateSomething(foo)}
Is there a better way?
I'm posting an answer, but the real credit goes to Shane Delmore for pointing this out:
Alternatively (or see @som-snytt's comments below):
Then use it like:
discard{ badMutateFun(foo) }
.Unlike the
;{ val _ = ... }
solution, it looks way better, and also works in the beginning of a block without needing to alter style (a;
can't come at the start of a block, it must come after a statement).