7.6. Argumenty domyślne

Deklarując parametry metody można podać ich argumenty domyślne. Robi się to dodając, po specyfikacji typu, znak równości i wartość argumentu. Jeśli parametr ma argument domyślny, to nie trzeba podawać jego wartości przy wywołaniu metody. W takim przypadku wartością parametru zostanie argument domyślny. Jeśli w wywołaniu podamy wartość takiego parametru, to ta wartość zostanie użyta, a argument domyślny zostanie zignorowany. Spójrzmy na metodę zdefiniowaną w pliku Arguments2.scala. Parametr greeting tej metody ma argument domyślny.

Plik Arguments2.scala:
def greet(greeting: String = "Hello", name: String, surname: String):String =
  greeting + " " + name + " " + surname + "!"

Wywołanie tej metody może mieć następującą postać.

scala> :load Arguments2.scala
Loading Arguments2.scala...
greet: (greeting: String, name: String, surname: String)String

scala> greet(name="Peter",surname="Brown")
res0: String = Hello Peter Brown!

Można też nadal wywoływać metodę podając wartości wszystkich parametrów.

scala> greet(name="John",surname="Brown",greeting="Welcome")
res1: String = Welcome John Brown!
scala> greet("Welcome","John","Brown")
res2: String = Welcome John Brown!

Jeśli definicja metody ma parametry z argumentami domyślnymi na końcu listy parametrów, to można ją wywołać przy wykorzystaniu argumentów pozycyjnych i bez konieczności podawania wartości tych parametrów.

Plik Arguments3.scala:
def greet(name: String, surname: String, greeting: String = "Hello"):String =
  greeting + " " + name + " " + surname + "!"

W taki sposób jest wywołana metoda greet w poniższym przykładzie.

scala> :load Arguments3.scala
Loading Arguments3.scala...
greet: (name: String, surname: String, greeting: String)String

scala> greet("John","Green")
res3: String = Hello John Green!

Specyfikacja języka Scala opisuje używanie argumentów domyślnych w punkcie 4.6.1.

Język programowania Scala Wydanie 2. Copyright © Grzegorz Balcerek 2016

Licencja Creative Commons

Ten utwór jest dostępny na licencji Creative Commons Uznanie autorstwa-Na tych samych warunkach 4.0 Międzynarodowe.

Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.