Skip to content

Commit 7a2822f

Browse files
committed
Update Polish translation for tour of scala
Fix numbers of eng mixin and tuples pages Add Polish introduction page Add Polish "basics" page Remove outof tags Make Polish "tuples" page visible Rewrite Polish "unified-types" page Remove tut fail assertion Remove redundant lines Remove tut from code example - should contain error Fix broken links Apply review suggestion Fix typo "powyższeego"
1 parent e8ca5da commit 7a2822f

File tree

7 files changed

+475
-50
lines changed

7 files changed

+475
-50
lines changed

_pl/tour/basics.md

Lines changed: 342 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,350 @@
11
---
22
layout: tour
3-
title: Basics
3+
title: Podstawy
44

55
discourse: false
66

77
partof: scala-tour
8+
9+
num: 2
810
language: pl
11+
next-page: unified-types
12+
previous-page: tour-of-scala
913
---
14+
15+
Na tej stronie omówimy podstawy języka Scala.
16+
17+
## Uruchamianie Scali w przeglądarce
18+
19+
Dzięki ScalaFiddle możesz uruchomić Scalę w swojej przeglądarce.
20+
21+
1. Przejdź do [https://scalafiddle.io](https://scalafiddle.io).
22+
2. Wklej kod `println("Hello, world!")` w polu po lewej stronie.
23+
3. Naciśnij przycisk "Run". W panelu po prawej stronie pojawi się wynik działania programu.
24+
25+
Jest to prosta i niewymagająca żadnej instalacji metoda do eksperymentowania z kodem w Scali.
26+
27+
Wiele przykładów kodu w tym przewodniku jest również zintegrowana ze ScalaFiddle,
28+
dzięki czemu można je wypróbować wciskając po prostu przycisk "Run".
29+
30+
## Wyrażenia
31+
32+
Wyrażenia są rezultatem ewaluacji fragmentów kodu.
33+
34+
```
35+
1 + 1
36+
```
37+
38+
Wyniki wyrażeń można wyświetlić za pomocą funkcji `println`.
39+
40+
{% scalafiddle %}
41+
```tut
42+
println(1) // 1
43+
println(1 + 1) // 2
44+
println("Hello!") // Hello!
45+
println("Hello," + " world!") // Hello, world!
46+
```
47+
{% endscalafiddle %}
48+
49+
### Wartości
50+
51+
Rezultaty wyrażeń mogą zostać nazwane za pomocą słowa kluczowego `val`.
52+
53+
```tut
54+
val x = 1 + 1
55+
println(x) // 2
56+
```
57+
58+
Nazwane wyniki, tak jak `x` w ww. przykładzie, to wartości.
59+
Odniesienie się do wartości nie powoduje jej ponownego obliczenia.
60+
61+
Wartości nie można przypisać ponownie.
62+
63+
```tut:fail
64+
x = 3 // Nie kompiluje się.
65+
```
66+
67+
Typy wartości mogą być wywnioskowane przez kompilator, ale można również wyraźnie określić type:
68+
69+
```tut
70+
val x: Int = 1 + 1
71+
```
72+
73+
Zauważ, że deklaracja `Int` pojawia po identyfikatorze `x`, potrzebny jest rówmież dwukropek `:`.
74+
75+
### Zmienne
76+
77+
Zmienne są podobne do wartości, ale z tym wyjątkiem, że można je ponownie przypisywać.
78+
Zmienną można zdefiniować używając słowa kluczowego `var`.
79+
80+
{% scalafiddle %}
81+
```tut
82+
var x = 1 + 1
83+
x = 3 // Kompiluje się, ponieważ "x" jest zdefiniowane z użyciem "var".
84+
println(x * x) // 9
85+
```
86+
{% endscalafiddle %}
87+
88+
Tak jak przy wartościach, można wyraźnie zdefiniować żądany typ:
89+
90+
```tut
91+
var x: Int = 1 + 1
92+
```
93+
94+
## Wyrażenia blokowe
95+
96+
Wyrażenia mogą być łączone poprzez zamknięcie ich w nawiasie klamrowym`{}`.
97+
Taką konstrukcję nazywamy blokiem.
98+
Wynikiem całego bloku kodu jest wynik ostatniego wyrażenia w tym bloku.
99+
100+
{% scalafiddle %}
101+
```tut
102+
println({
103+
val x = 1 + 1
104+
x + 1
105+
}) // 3
106+
```
107+
{% endscalafiddle %}
108+
109+
## Funkcje
110+
111+
Funkcje to wyrażenia, które przyjmują pewne parametry.
112+
113+
Poniżej zdefiniowana jest funkcja anonimowa (nieposiadająca nazwy), która zwraca liczbę całkowitą przekazaną jako parametr, zwiększoną o 1.
114+
115+
```tut
116+
(x: Int) => x + 1
117+
```
118+
119+
Po lewej stronie od `=>` znajduje się lista parametrów.
120+
Po prawej stronie - wyrażenie wykorzystujące te parametry.
121+
122+
Funkcje można również nazywać.
123+
124+
{% scalafiddle %}
125+
```tut
126+
val addOne = (x: Int) => x + 1
127+
println(addOne(1)) // 2
128+
```
129+
{% endscalafiddle %}
130+
131+
Funkcje mogą przyjmować wiele parametrów.
132+
133+
{% scalafiddle %}
134+
```tut
135+
val add = (x: Int, y: Int) => x + y
136+
println(add(1, 2)) // 3
137+
```
138+
{% endscalafiddle %}
139+
140+
Mogą też wcale nie mieć parametrow.
141+
142+
{% scalafiddle %}
143+
```tut
144+
val getTheAnswer = () => 42
145+
println(getTheAnswer()) // 42
146+
```
147+
{% endscalafiddle %}
148+
149+
## Metody
150+
151+
Metody wyglądają i zachowują się bardzo podobnie jak funkcje, jednak jest między nimi kilka kluczowych różnic.
152+
153+
Metody są definiowane z użyciem słowa kluczowego `def`.
154+
Po `def` następuje nazwa metody, lista parametrów, zwracany typ i ciało metody.
155+
156+
{% scalafiddle %}
157+
```tut
158+
def add(x: Int, y: Int): Int = x + y
159+
println(add(1, 2)) // 3
160+
```
161+
{% endscalafiddle %}
162+
163+
Zauważ, że zwracany typ jest zadeklarowany _po_ liście parametrów i dwukropku `: Int`.
164+
165+
Metody mogą mieć wiele list parametrów.
166+
167+
{% scalafiddle %}
168+
```tut
169+
def addThenMultiply(x: Int, y: Int)(multiplier: Int): Int = (x + y) * multiplier
170+
println(addThenMultiply(1, 2)(3)) // 9
171+
```
172+
{% endscalafiddle %}
173+
174+
Mogą również wcale ich nie posiadać.
175+
176+
{% scalafiddle %}
177+
```tut
178+
def name: String = System.getProperty("user.name")
179+
println("Hello, " + name + "!")
180+
```
181+
{% endscalafiddle %}
182+
183+
Od funkcji odróżnia je jeszcze kilka innych rzeczy, ale na razie możesz o nich myśleć jak o bardzo podobnych do funkcji.
184+
185+
Metody mogą zawierać również wyrażenia wielowierszowe.
186+
187+
```tut
188+
def getSquareString(input: Double): String = {
189+
val square = input * input
190+
square.toString
191+
}
192+
```
193+
194+
Ostatnie wyrażenie w ciele metody jest wartością, jaką zwraca cała metoda.
195+
Scala posiada słowo kluczowe `return`, ale jest ono wykorzystywane bardzo rzadko.
196+
197+
## Klasy
198+
199+
Klasy są definiowane za pomocą słowa kluczowego `class`, po którym następuje nazwa klasy i parametry konstruktora.
200+
201+
{% scalafiddle %}
202+
```tut
203+
class Greeter(prefix: String, suffix: String) {
204+
def greet(name: String): Unit =
205+
println(prefix + name + suffix)
206+
}
207+
```
208+
209+
Metoda `greet` zwraca typ `Unit` - oznacza to, że nie ma nic znaczącego do zwrócenia.
210+
`Unit` jest używany podobnie jak `void` w językach Java i C.
211+
Różnica polega na tym, że w Scali każde wyrażenie musi zwracać jakąś wartosć, tak naprawdę istnieje [obiekt singleton](singleton-objects.html) typu `Unit` - nie niesie on ze sobą żadnej znaczącej informacji.
212+
213+
Nowe instancje klasy tworzy się za pomocą słowa kluczowego `new`.
214+
215+
```tut
216+
val greeter = new Greeter("Hello, ", "!")
217+
greeter.greet("Scala developer") // Hello, Scala developer!
218+
```
219+
{% endscalafiddle %}
220+
221+
Klasy zostaną szerzej omówione w [dalszej części](classes.html) tego przewodnika.
222+
223+
## Klasy przypadku (case classes)
224+
225+
W Scali istnieje spacjalny typ klasy - klasa "przypadku" (case class).
226+
Klasy przypadku są domyślnie niezmienne i porównywane przez wartości.
227+
Klasy te można definiować używająć słów kluczowych `case class`.
228+
229+
{% scalafiddle %}
230+
```tut
231+
case class Point(x: Int, y: Int)
232+
```
233+
234+
Do utworzenia nowej instacji klasy przypadku nie jest konieczne używanie słowa kluczowego `new`.
235+
236+
```tut
237+
val point = Point(1, 2)
238+
val anotherPoint = Point(1, 2)
239+
val yetAnotherPoint = Point(2, 2)
240+
```
241+
242+
Są one porównywane przez wartości - _nie_ przez referencje.
243+
244+
```tut
245+
if (point == anotherPoint) {
246+
println(point + " i " + anotherPoint + " są jednakowe.")
247+
} else {
248+
println(point + " i " + anotherPoint + " są inne.")
249+
} // Point(1,2) i Point(1,2) są jednakowe.
250+
251+
if (point == yetAnotherPoint) {
252+
println(point + " i " + yetAnotherPoint + " są jednakowe.")
253+
} else {
254+
println(point + " i " + yetAnotherPoint + " są inne.")
255+
} // Point(1,2) i Point(2,2) są inne.
256+
```
257+
{% endscalafiddle %}
258+
259+
Klasy przypadków to dużo szerszy temat, do zapoznania z którym bardzo zachęcamy. Jesteśmy pewni, że Ci się spodoba!
260+
Jest on dokładnie omówiony w [późniejszym rozdziale](case-classes.html).
261+
262+
## Obiekty
263+
264+
Obiekty to pojedyncze wystąpienia ich definicji.
265+
Można o nich myśleć jak o instancjach ich własnych klas - singletonach.
266+
267+
Objekty definiuje się z użyciem słowa kluczowego `object`.
268+
269+
{% scalafiddle %}
270+
```tut
271+
object IdFactory {
272+
private var counter = 0
273+
def create(): Int = {
274+
counter += 1
275+
counter
276+
}
277+
}
278+
```
279+
280+
Aby uzyskać dostęp do obiektu używa się jego nazwy.
281+
282+
```tut
283+
val newId: Int = IdFactory.create()
284+
println(newId) // 1
285+
val newerId: Int = IdFactory.create()
286+
println(newerId) // 2
287+
```
288+
{% endscalafiddle %}
289+
290+
Obiekty zostaną szerzej omówione [później](singleton-objects.html).
291+
292+
## Cechy (traits)
293+
294+
Cechy to typy zawierające pewne pola i metody.
295+
Wiele cech może być łączonych.
296+
297+
Cechę (trait) można zdefiniować używając słowa kluczowego `trait`.
298+
299+
```tut
300+
trait Greeter {
301+
def greet(name: String): Unit
302+
}
303+
```
304+
305+
Cechy mogą zawierać domyślną implementację.
306+
307+
{% scalafiddle %}
308+
```tut
309+
trait Greeter {
310+
def greet(name: String): Unit =
311+
println("Hello, " + name + "!")
312+
}
313+
```
314+
315+
Cechy można rozszerzać używając słowa kluczowego `extends` i nadpisać implementację z użyciem `override`.
316+
317+
```tut
318+
class DefaultGreeter extends Greeter
319+
320+
class CustomizableGreeter(prefix: String, postfix: String) extends Greeter {
321+
override def greet(name: String): Unit = {
322+
println(prefix + name + postfix)
323+
}
324+
}
325+
326+
val greeter = new DefaultGreeter()
327+
greeter.greet("Scala developer") // Hello, Scala developer!
328+
329+
val customGreeter = new CustomizableGreeter("How are you, ", "?")
330+
customGreeter.greet("Scala developer") // How are you, Scala developer?
331+
```
332+
{% endscalafiddle %}
333+
334+
W tym przykładzie `DefaultGreeter` rozszerza tylko jedną cechę (trait), ale równie dobrze może rozszerzać ich wiele.
335+
336+
Cechy zostały dokładniej opisane w jednym z [kolejnych](traits.html) rozdziałów.
337+
338+
## Metoda Main
339+
340+
Metoda `main` to punkt wejścia do programu.
341+
Maszyna Wirtalna Javy (Java Virtual Machine / JVM) wymaga, aby metoda ta nazywała się "main" i posiadała jeden arguemnt - tablicę ciągów znaków.
342+
343+
Z użyciem obiektu można zdefiniować metodę `main` w następujący sposób:
344+
345+
```tut
346+
object Main {
347+
def main(args: Array[String]): Unit =
348+
println("Hello, Scala developer!")
349+
}
350+
```

_pl/tour/mixin-class-composition.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ discourse: false
66

77
partof: scala-tour
88

9-
num: 5
9+
num: 6
1010
language: pl
1111
next-page: higher-order-functions
1212
previous-page: tuples

0 commit comments

Comments
 (0)