
W
Definiowanie metod w języku Scala - def przedstawiłem znaczenie słowa kluczowego
def w
języku Scala.
W imię przygotowań do
Scalania 3 kontynuuję temat.
Wpisujemy bezpośrednio do Scala REPL definicję funkcji sumowania
sum, które akceptuje dwa parametry typu
Int.
scala> def sum(x: Int, y: Int) = x + y
sum: (x: Int, y: Int)Int
W odpowiedzi dostajemy nazwę nowej wartości
sum i jej typ po dwukropku
(x: Int, y: Int)Int, czyli funkcję dwóch parametrów
x i
y, której wynikiem jest wartość typu
Int. Pamiętaj, że
sum jest wartością niezmienną i jej wartość zawsze będzie typu
(x: Int, y: Int)Int.
Wywołaj funkcję
sum z dowolnymi parametrami (jednak wciąż z zakresu typu
Int), np.
sum(2, 4).
scala> sum(2,4)
res0: Int = 6
Wywołanie funkcji to podanie jej nazwy z określeniem wartości parametrów wejściowych. W wyniku otrzymujesz nazwę wyniku -
res0, jej typ po dwukropku -
Int - oraz wartość po znaku równości -
6. Proste? Dokładnie! Zero magii (zakładając, że nie przespałaś kilku lekcji matematyki, na których było o funkcjach i sposobach ich wywołania).
Spróbuj wykonać funkcję z parametrem innego typu, np.
String - ciągiem znaków między apostrofami.
scala> sum("b", "b")
<console>:9: error: type mismatch;
found : String("b")
required: Int
sum("b", "b")
^
Otrzymałaś błąd niezgodności typów -
<console>:9: error: type mismatch;. Oczywiście należało się tego spodziewać, bo jedynym typem wejściowym funkcji
sum jest
Int.
Int nie jest
String.
Zadanie: Napisz definicję funkcji
sum(a: String, b: String) i wykonaj ją dla kilku wybranych par ciągów, np.
sum("m", "n"). Co miałoby być wynikiem?