Skip to content

Commit fdd1dac

Browse files
committed
translate untranslated chapters to Polish
1 parent f6e4b50 commit fdd1dac

32 files changed

+213
-48
lines changed

Diff for: _pl/tour/abstract-type-members.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ layout: tour
33
title: Typy abstrakcyjne
44
partof: scala-tour
55

6-
num: 22
6+
num: 24
77
language: pl
88
next-page: compound-types
99
previous-page: inner-classes

Diff for: _pl/tour/annotations.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ layout: tour
33
title: Adnotacje
44
partof: scala-tour
55

6-
num: 31
7-
next-page: default-parameter-values
8-
previous-page: automatic-closures
6+
num: 33
7+
next-page: packages-and-imports
8+
previous-page: by-name-parameters
99
language: pl
1010
---
1111

Diff for: _pl/tour/by-name-parameters.md

+36-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,41 @@
11
---
22
layout: tour
3-
title: By-name Parameters
3+
title: Parametry według nazwy
44
partof: scala-tour
5+
6+
num: 32
7+
next-page: annotations
8+
previous-page: operators
59
language: pl
610
---
11+
12+
_Parametry według nazwy_ są ewaluowane za każdym razem gdy są używane. Nie zostaną w ogóle wyewaluowane jeśli nie będą używane. Jest to podobne do zastępowania parametrów według nazwy przekazanymi wyrażeniami. Są przeciwieństwem do _parametrów według wartości_. Aby utworzyć parametr wywoływany według nazwy, po prostu dodaj `=>` przed jego typem.
13+
14+
```tut
15+
def calculate(input: => Int) = input * 37
16+
```
17+
18+
Parametry według nazwy mają tę zaletę że nie są ewaluowane jeśli nie są używane w treści funkcji. Z drugiej strony parametry według wartości mają tę zaletę, że są ewaluowane tylko raz.
19+
20+
Oto przykład, jak możemy zaimplementować pętlę while:
21+
22+
```tut
23+
def whileLoop(condition: => Boolean)(body: => Unit): Unit =
24+
if (condition) {
25+
body
26+
whileLoop(condition)(body)
27+
}
28+
29+
var i = 2
30+
31+
whileLoop (i > 0) {
32+
println(i)
33+
i -= 1
34+
} // prints 2 1
35+
```
36+
37+
Metoda `whileLoop` używa wielu list parametrów do określenia warunku i treści pętli. Jeśli `condition` (warunek) jest prawdziwy, `body` (treść) jest wykonywana a następnie wykonywane jest rekurencyjne wywołanie `whileLoop`. Jeśli `condition` jest fałszywy, treść nigdy nie jest oceniana, ponieważ dodaliśmy `=>` do typu `body`.
38+
39+
Teraz, kiedy przekażemy `i>0` jako nasz `condition` (warunek) i `println(i); i-= 1` jako `body`, zachowuje się jak standardowa pętla while w wielu językach.
40+
41+
Ta możliwość opóźnienia ewaluacji parametru do czasu jego użycia może zwiększyć wydajność, jeśli ewaluacja parametru wymaga intensywnych obliczeń lub dłużej działającego bloku kodu, takiego jak fetchowanie (pobieranie) adresu URL.

Diff for: _pl/tour/case-classes.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ layout: tour
33
title: Klasy przypadków
44
partof: scala-tour
55

6-
num: 11
6+
num: 13
77
language: pl
88
next-page: pattern-matching
99
previous-page: multiple-parameter-lists

Diff for: _pl/tour/classes.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ partof: scala-tour
55

66
num: 4
77
language: pl
8-
next-page: traits
8+
next-page: default-parameter-values
99
previous-page: unified-types
1010
---
1111

Diff for: _pl/tour/compound-types.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ layout: tour
33
title: Typy złożone
44
partof: scala-tour
55

6-
num: 23
6+
num: 25
77
language: pl
88
next-page: self-types
99
previous-page: abstract-type-members

Diff for: _pl/tour/default-parameter-values.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ layout: tour
33
title: Domyślne wartości parametrów
44
partof: scala-tour
55

6-
num: 32
6+
num: 5
77
language: pl
88
next-page: named-arguments
9-
previous-page: annotations
9+
previous-page: classes
1010
---
1111

1212
Scala zezwala na określenie domyślnych wartości dla parametrów, co pozwala wyrażeniu wywołującemu ją na pominięcie tych parametrów.

Diff for: _pl/tour/extractor-objects.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ layout: tour
33
title: Obiekty ekstraktorów
44
partof: scala-tour
55

6-
num: 15
6+
num: 17
77
language: pl
88
next-page: for-comprehensions
99
previous-page: regular-expression-patterns

Diff for: _pl/tour/for-comprehensions.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ layout: tour
33
title: For Comprehensions
44
partof: scala-tour
55

6-
num: 16
6+
num: 18
77
language: pl
88
next-page: generic-classes
99
previous-page: extractor-objects

Diff for: _pl/tour/generic-classes.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ layout: tour
33
title: Klasy generyczne
44
partof: scala-tour
55

6-
num: 17
6+
num: 19
77
language: pl
88
next-page: variances
99
previous-page: for-comprehensions

Diff for: _pl/tour/higher-order-functions.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ layout: tour
33
title: Funkcje wyższego rzędu
44
partof: scala-tour
55

6-
num: 8
6+
num: 10
77
language: pl
88
next-page: nested-functions
99
previous-page: mixin-class-composition

Diff for: _pl/tour/implicit-conversions.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ layout: tour
33
title: Konwersje niejawne
44
partof: scala-tour
55

6-
num: 26
6+
num: 28
77
language: pl
88
next-page: polymorphic-methods
99
previous-page: implicit-parameters

Diff for: _pl/tour/implicit-parameters.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ layout: tour
33
title: Parametry domniemane
44
partof: scala-tour
55

6-
num: 25
6+
num: 27
77
language: pl
88
next-page: implicit-conversions
99
previous-page: self-types

Diff for: _pl/tour/inner-classes.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ layout: tour
33
title: Klasy wewnętrzne
44
partof: scala-tour
55

6-
num: 21
6+
num: 23
77
language: pl
88
next-page: abstract-type-members
99
previous-page: lower-type-bounds

Diff for: _pl/tour/lower-type-bounds.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ layout: tour
33
title: Dolne ograniczenia typów
44
partof: scala-tour
55

6-
num: 20
6+
num: 22
77
language: pl
88
next-page: inner-classes
99
previous-page: upper-type-bounds

Diff for: _pl/tour/mixin-class-composition.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ layout: tour
33
title: Kompozycja klas przez domieszki
44
partof: scala-tour
55

6-
num: 7
6+
num: 9
77
language: pl
88
next-page: higher-order-functions
99
previous-page: tuples

Diff for: _pl/tour/multiple-parameter-lists.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ layout: tour
33
title: Rozwijanie funkcji (Currying)
44
partof: scala-tour
55

6-
num: 10
6+
num: 12
77
language: pl
88
next-page: case-classes
99
previous-page: nested-functions

Diff for: _pl/tour/named-arguments.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@ layout: tour
33
title: Parametry nazwane
44
partof: scala-tour
55

6-
num: 33
6+
num: 6
77
language: pl
8+
next page: traits
89
previous-page: default-parameter-values
910
---
1011

Diff for: _pl/tour/nested-functions.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ layout: tour
33
title: Funkcje zagnieżdżone
44
partof: scala-tour
55

6-
num: 9
6+
num: 11
77
language: pl
88
next-page: multiple-parameter-lists
99
previous-page: higher-order-functions

Diff for: _pl/tour/operators.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ layout: tour
33
title: Operatory
44
partof: scala-tour
55

6-
num: 29
6+
num: 31
77
language: pl
8-
next-page: automatic-closures
8+
next-page: by-name-parameters
99
previous-page: type-inference
1010
---
1111

Diff for: _pl/tour/package-objects.md

+59-5
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,68 @@
11
---
22
layout: tour
3-
title: Package Objects
3+
title: Obiekty pakietu
44
language: pl
55
partof: scala-tour
66

7-
num: 36
7+
num: 35
88
previous-page: packages-and-imports
9+
language: pl
910
---
1011

11-
# Package objects
12+
# Obiekty pakietu
13+
14+
Scala udostępnia obiekty pakietu jako wygodny kontener wspóldzielony w całym pakiecie.
15+
16+
Obiekty pakietu mogą zawierać dowolne definicje, nie tylko definicje zmiennych i metod. Na przykład, są często używane do przechowywania aliasów typów dla całego pakietu i niejawnych konwersji. Obiekty pakietu mogą nawet dziedziczyć klasy i cechy (traits) Scali.
17+
18+
Z założenia, kod źródłowy obiektu pakietu jest zwykle umieszczany w pliku źródłowym o nazwie `package.scala`.
19+
20+
Każdy pakiet może mieć jeden obiekt pakietu. Uwzględniane są wszelkie definicje umieszczone w pakiecie członków samego pakietu.
21+
22+
Zobacz przykład poniżej. Załóżmy najpierw, że w pakiecie klasa `Fruit` i trzy obiekty `Fruit` w pakiecie `gradening.fruits`:
23+
24+
```
25+
// in file gardening/fruits/Fruit.scala
26+
package gardening.fruits
27+
28+
case class Fruit(name: String, color: String)
29+
object Apple extends Fruit("Apple", "green")
30+
object Plum extends Fruit("Plum", "blue")
31+
object Banana extends Fruit("Banana", "yellow")
32+
```
33+
34+
Teraz załóżmy, że chcesz umieścić zmienną `planted` i metodę `showFruit` bezpośrednio w pakiecie `gardening.fruits`.
35+
Oto jak to się robi:
36+
37+
```
38+
// in file gardening/fruits/package.scala
39+
package gardening
40+
package object fruits {
41+
val planted = List(Apple, Plum, Banana)
42+
def showFruit(fruit: Fruit): Unit = {
43+
println(s"${fruit.name}s are ${fruit.color}")
44+
}
45+
}
46+
```
47+
48+
Jako przykład tego, jak wygląda użytkowanie, obiekt `PrintPlanted` importuje `planted` i `showFruit` w ten sam sposób, w jaki importuje klasę `Fruit` - używając importu wieloznacznego w pakiecie `gardening.fruits`.
49+
50+
```
51+
// in file PrintPlanted.scala
52+
import gardening.fruits._
53+
object PrintPlanted {
54+
def main(args: Array[String]): Unit = {
55+
for (fruit <- planted) {
56+
showFruit(fruit)
57+
}
58+
}
59+
}
60+
```
61+
62+
Obiekty pakietu są podobne do innych obiektów, co oznacza, że można je tworzyć przy użyciu dziedziczenia. Na przykład można łączyć kilka cech:
1263

13-
(this section of the tour has not been translated yet. pull request
14-
with translation welcome!)
64+
```
65+
package object fruits extends FruitAliases with FruitHelpers {
66+
// tutaj znajdują się pomocniki (helpers) i zmienne
67+
}
68+
```

Diff for: _pl/tour/packages-and-imports.md

+83-6
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,92 @@
11
---
22
layout: tour
3-
title: Packages and Imports
3+
title: Paczki i importy
44
language: pl
55
partof: scala-tour
66

7-
num: 35
8-
previous-page: named-arguments
7+
num: 34
8+
previous-page: annotations
99
next-page: package-objects
10+
language: pl
1011
---
1112

12-
# Packages and Imports
13+
# Paczki i importy
14+
Scala używa pakietów do tworzenia przestrzeni nazw (namespaces), które umożliwiają modularyzację programów.
15+
16+
## Tworzenie pakietu
17+
Pakiety są tworzone przez zadeklarowanie jednej lub więcej nazw pakietów w górnej części pliku Scali.
18+
19+
```
20+
package users
21+
22+
class User
23+
```
24+
25+
Jednym z założeń jest nadanie paczce takiej samej nazwy, jak katalog zawierający plik Scali. Jednak Scala jest niezależna od układu plików. Struktura katalogów projektu SBT dla użytkowników pakietu (`package users`) może wyglądać następująco:
26+
27+
```
28+
- ExampleProject
29+
- build.sbt
30+
- project
31+
- src
32+
- main
33+
- scala
34+
- users
35+
User.scala
36+
UserProfile.scala
37+
UserPreferences.scala
38+
- test
39+
```
40+
41+
Zwróć uwagę, że katalog `users` znajduje się w katalogu `scala` i jak w pakiecie znajduje się wiele plików Scali. Każdy plik Scali w pakiecie może mieć tę samą deklarację pakietu. Innym sposobem deklarowania pakietów jest użycie nawiasów klamrowych:
42+
43+
```
44+
package users {
45+
package administrators {
46+
class NormalUser
47+
}
48+
package normalusers {
49+
class NormalUser
50+
}
51+
}
52+
```
53+
54+
Jak widać, pozwala to na zagnieżdżanie pakietów i zapewnia większą kontrolę nad zakresem i hermetyzacją. Nazwa pakietu powinna być zapisana małymi literami, a jeśli kod jest opracowywany w organizacji, która posiada witrynę internetową, powinna mieć następującą konwencję formatu: `<top-level-domain>.<domain-name>.<project-name>`. Na przykład, gdyby firma Google miała projekt o nazwie `SelfDrivingCar`, nazwa pakietu wyglądałaby następująco:
55+
56+
```
57+
package com.google.selfdrivingcar.camera
58+
59+
class Lens
60+
```
61+
62+
Może to odpowiadać następującej strukturze katalogów: `SelfDrivingCar/src/main/scala/com/google/selfdrivingcar/camera/Lens.scala`.
63+
64+
## Import
65+
66+
Deklaracje `import` służą do uzyskiwania dostępu do członków (members, tzn.: klasy, cechy, funkcje itp.) w innych pakietach. Aby uzyskać dostęp do członków tego samego pakietu, nie jest wymagana deklaracja `import`. Deklaracje `import` są selektywne.
67+
68+
```
69+
import users._ // zaimportuj wszystko z pakietu użytkowników
70+
import users.User // zaimportuj klasę User
71+
import users.{User, UserPreferences} // zaimportuj tylko wybranych członków
72+
import users.{UserPreferences => UPrefs} // zaimportuj i zmień nazwę dla wygody
73+
```
74+
75+
Jedną z różnic w Scali od Javy jest to, że `import` można używać wszędzie:
76+
77+
```tut
78+
def sqrtplus1(x: Int) = {
79+
import scala.math.sqrt
80+
sqrt(x) + 1.0
81+
}
82+
```
83+
84+
W przypadku konfliktu nazw i konieczności zaimportowania czegoś z katalogu głównego projektu, poprzedź nazwę pakietu przedrostkiem `_root_`:
85+
86+
```
87+
package accounts
88+
89+
import _root_.users._
90+
```
1391

14-
(this section of the tour has not been translated yet. pull request
15-
with translation welcome!)
92+
Uwaga: pakiety `scala` i `java.lang` oraz `object Predef` są domyślnie importowane.

0 commit comments

Comments
 (0)