7.5. Argumenty pozycyjne i nazwane

Przekazywanie argumentów wywoływanej metodzie może odbywać się w różny sposób. Jednym z nich jest stosowanie tak zwanych argumentów pozycyjnych, a drugim argumentów nazwanych. Stosowanie argumentów pozycyjnych polega na podawaniu wartości argumentów w kolejności ich występowania na liście deklaracji parametrów w definicji metody. Spójrzmy na definicję metody greet z pliku Arguments1.scala.

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

Wywołanie tej metody z użyciem argumentów pozycyjnych wygląda następująco.

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

scala> greet("Hello","John","Brown")
res0: String = Hello John Brown!

Stosowanie argumentów nazwanych polega na podawaniu ich wartości poprzedzonych nazwą parametru i znakiem równości. Poniższy przykład pokazuje wywołanie metody greet z użyciem argumentów nazwanych.

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

Wywołując metodę w ten sposób nie musimy przestrzegać kolejności argumentów zgodnej z kolejnością ich deklaracji w definicji metody. Zatem wywołanie metody greet możemy na przykład zapisać następująco.

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

Możemy także przekazać wartości początkowych parametrów za pomocą argumentów pozycyjnych, a resztę za pomocą argumentów nazwanych. W poniższym wywołaniu metody greet pierwszy argument jest podany w postaci argumentu pozycyjnego, a następne dwa w postaci argumentów nazwanych.

scala> greet("Hello",surname="Brown",name="John")
res3: String = Hello John Brown!

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.