Scala Cheatsheet
Scala Cheatsheet
Language
Podziękowania dla Brendan O’Connor. Ten cheatsheet ma być szybkim podsumowaniem konstrukcji składniowych Scali. Licencjonowany przez Brendan O’Connor pod licencją CC-BY-SA 3.0.
zmienne | ||
Dobrze
|
Zmienna. | |
Źle
|
Stała. | |
|
Zmienna z podanym typem. | |
funkcje | ||
Dobrze
Źle
|
Definiowanie funkcji. Ukryty błąd: bez znaku = jest procedurą zwracającą Unit ; powoduje to chaos. Przestarzałe w Scali 2.13. |
|
Dobrze
Źle
|
Definiowanie funkcji. Błąd składni: wymagane są typy dla każdego argumentu. |
|
|
Alias typu. | |
vs.
|
Wywoływanie przez wartość. Wywoływanie przez nazwę (parametr leniwy). |
|
|
Funkcja anonimowa. | |
vs.
|
Funkcja anonimowa: podkreślenie to argument pozycyjny. | |
|
Funkcja anonimowa: aby użyć argumentu dwa razy, musisz go nazwać | |
Dobrze
Źle
|
Funkcja anonimowa: związana metoda infiksowa. Możesz użyć także 2 * _ . |
|
|
Funkcja anonimowa: z bloku zwracane jest ostatnie wyrażenie. | |
|
Funkcja anonimowa: styl potokowy. | |
|
Funkcja anonimowa: aby przekazać kilka bloków musisz użyć nawiasów. | |
|
Rozwijanie funkcji, oczywista składnia. | |
|
Rozwijanie funkcji, oczywista składnia | |
|
Rozwijanie funkcji, lukier składniowy, ale wtedy: | |
|
Potrzeba podążającego podkreślenia, aby wydobyć funkcję częściowo zaaplikowaną, tylko przy wersji z lukrem składniowym. | |
|
Typ generyczny. | |
|
Lukier składniowy dla operatorów infiksowych. | |
|
Zmienna liczba argumentów. | |
pakiety | ||
|
Import wszystkiego z pakietu. | |
|
Import selektywny. | |
|
Import ze zmianą nazwy. | |
|
Importowanie wszystkiego z java.util poza Date . |
|
Na początku pliku:
Definiowanie pakietu według zakresu:
Singleton dla pakietu:
|
Deklaracja pakietu. | |
struktury danych | ||
|
Literał krotki (Tuple3 ). |
|
|
Przypisanie z podziałem: rozpakowywanie krotki przy pomocy dopasowywania wzorca. | |
Źle
|
Ukryty błąd: do każdego przypisana cała krotka. | |
|
Lista (niezmienna). | |
|
Indeksowanie za pomocą nawiasów (slajdy). | |
|
Operator dołożenia elementu na początek listy. | |
to samo co:
|
Składnia dla przedziałów. | |
|
Jedyny obiekt typu Unit. Identyczny do void w C i Java. |
|
konstrukcje kontrolne | ||
|
Warunek. | |
to samo co:
|
Lukier składniowy dla warunku. | |
|
Pętla while. | |
|
Pętla do-while. | |
|
Instrukcja przerwania pętli (slajdy). | |
to samo co:
|
Intrukcja for: filtrowanie/mapowanie. | |
to samo co:
|
Instrukcja for: przypisanie z podziałem. | |
to samo co:
|
Instrukcja for: iloczyn kartezjański. | |
|
Instrukcja for: imperatywnie.sprintf style. |
|
|
Instrukcja for: iterowanie aż do górnej granicy włącznie. | |
|
Instrukcja for: iterowanie poniżej górnej granicy. | |
pattern matching (dopasowywanie wzorca) | ||
Dobrze
Źle
|
Używaj słowa kluczowego case w funkcjach w celu dopasowywania wzorca. |
|
Źle
|
v42 jest interpretowane jako nazwa pasująca do każdej wartości typu Int, więc "42" zostaje wypisywane. |
|
Dobrze
|
`v42` z grawisami jest interpretowane jako istniejąca wartośćv42 , więc “Not 42” zostaje wypisywane. |
|
Dobrze
|
UppercaseVal jest traktowane jako istniejąca wartość, nie jako zmienna wzorca, bo zaczyna się z wielkiej litery. W takim razie wartość przechowywana w UppercaseVal jest porównywana z 3 , więc “Not 42” jest wypisywane. |
|
obiektowość | ||
|
Parametry konstruktora x - prywatne. |
|
|
Parametry konstruktora - publiczne. | |
|
Konstruktor jest ciałem klasy. Deklaracja publicznego pola. Deklaracja publicznej stałej. Deklaracja pola prywatnego. Alternatywny konstruktor. |
|
|
Instancja klasy anonimowej. | |
|
Defiicja klasy abstrakcyjnej (nie da się stworzyć obiektu tej klasy). | |
|
Definicja klasy pochodnej. | |
|
Dziedziczenie i parametry konstruktora (wishlist: domyślne, automatyczne przekazywanie parametrów). | |
|
Definicja singletona (w stylu modułu). | |
|
Cechy. Interface'y z implementacją. Bez parametrów konstruktora. Możliwość mixin'ów. |
|
|
Wiele cech. | |
|
W przeciążeniach funkcji wymagane jest słowo kluczowe override . |
|
|
Tworzenie obiektu. | |
Źle
Dobrze
|
Błąd typu: typ abstrakcyjny. Zamiast tego konwencja: wywoływalna fabryka przysłaniająca typ. |
|
|
Literał klasy. | |
|
Sprawdzanie typu (w czasie wykonania). | |
|
Rzutowanie typu (w czasie wykonania). | |
|
Oznaczenie typu (w czasie kompilacji). | |
opcje | ||
|
Tworzenie niepustej wartości opcjonalnej. | |
|
Pojedyncza pusta wartość opcjonalna. | |
ale
|
Fabryka wartości opcjonalnych null-safe. | |
to samo co:
|
Jawny typ pustej wartości opcjonalnej Fabryka dla pustej wartości opcjonalnej. |
|
|
Styl potokowy (pipeline). | |
|
Składnia instrukcji for. | |
to samo co:
|
Zastosuj funkcję do wartości opcjonalnej. | |
to samo co:
|
To samo co map, ale funkcja musi zwracać opcjonalną wartość. | |
to samo co:
|
Wyodrębnij opcję zagnieżdżoną. | |
to samo co:
|
Zastosuj procedurę na wartości opcjonalnej. | |
to samo co:
|
Zastosuj funkcję do wartości opcjonalnej, zwróć wartość domyślną, jeśli pusta. | |
to samo co:
|
Zastosuj częściowe dopasowanie do wzorca dla wartości opcjonalnej. | |
to samo co:
|
true jeżeli nie jest puste. |
|
to samo co:
|
true jeżeli puste. |
|
to samo co:
|
true jeżeli nie jest puste. |
|
to samo co:
|
0 jeżeli puste, w przeciwnym razie 1 . |
|
to samo co:
|
Oblicz i zwróć alternatywną wartość opcjonalną, jeżeli pierwotna wartość jest pusta. | |
to samo co:
|
Oblicz i zwróć wartość domyślną, jeżeli pierwotna wartość jest pusta. | |
to samo co:
|
Zwróć wartość, jeżeli pusta to rzuć wyjątek. | |
to samo co:
|
Zwróć wartość, null jeżeli pusta. |
|
to samo co:
|
Wartość opcjonalna spełnia predyktat. | |
to samo co:
|
Wartość opcjonalna nie spełnia predyktatu. | |
to samo co:
|
Zastosuj predyktat na wartości lub false jeżeli pusta. |
|
to samo co:
|
Zastosuj predyktat na opcjonalnej wartości lub true jeżeli pusta. |
|
to samo co:
|
Sprawdź, czy wartość jest równa wartości opcjonalnej lub false jeżeli pusta. |