24.2. Metoda unless
W pliku Unless.scala zaimplementowana jest metoda unless, realizująca w ograniczony sposób działanie odwrotne do działania wyrażenia if. Wyrażenie if może posłużyć do wykonania bloku kodu w przypadku, gdy określony warunek logiczny jest spełniony. Zadanie metody unless jest odwrotne, to znaczy ta metoda ma służyć wykonaniu określonego bloku kodu wtedy, gdy określony warunek logiczny nie jest spełniony, czyli ma wartość logiczną false.
Plik Unless.scala: object Unless { def unless(cond: Boolean)(u: => Unit) = { if (!cond) u } }
Przykład użycia metody unless jest pokazany poniżej.
scala> import Unless._
import Unless._
scala> def hello(name: String) = unless(name == null){
| println("Hello " + name)
| }
hello: (name: String)Unit
scala> hello(null)
scala> hello("Peter")
Hello Peter
Dzięki temu, że Scala umożliwia definiowanie metod z wieloma listami parametrów, w wywołaniu metody unless oba parametry mogą być umieszczone w osobnych nawiasach. Dzięki temu, że Scala umożliwia wykorzystanie nawiasów klamrowych w przypadku jednoelementowej listy parametrów, wywołanie metody println w definicji metody hello może być otoczone nawiasami klamrowymi, a nie okrągłymi. Przekazywanie parametru body przez nazwę pozwala na niewykonywanie wyrażenia przekazanego w tym parametrze w przypadku, gdy warunek cond ma wartość true.
Plik Unless.scala:
object Unless {
def unless(cond: Boolean)(u: => Unit) = {
if (!cond) u
}
}
