Skip to content

Commit 0b31579

Browse files
committed
Merge remote-tracking branch 'origin/main' into splain
2 parents b205b34 + 95456cd commit 0b31579

File tree

481 files changed

+24063
-3228
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

481 files changed

+24063
-3228
lines changed

.drone.yml

Lines changed: 0 additions & 5 deletions
This file was deleted.

.github/dependabot.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: bundler
4+
directory: "/"
5+
schedule:
6+
interval: daily
7+
open-pull-requests-limit: 10
8+
ignore:
9+
- dependency-name: html-proofer
10+
versions:
11+
- "> 3.15.3"

.github/workflows/build.yml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
name: Build
2+
on: [push, pull_request]
3+
jobs:
4+
build:
5+
runs-on: ubuntu-20.04
6+
steps:
7+
- uses: actions/checkout@v2
8+
- name: Set up Ruby
9+
uses: ruby/setup-ruby@v1
10+
with:
11+
ruby-version: 2.5.8
12+
bundler-cache: true
13+
- name: Set up coursier
14+
uses: laughedelic/coursier-setup@v1
15+
with:
16+
jvm: adopt:11
17+
- name: Run mdoc
18+
run: |
19+
./scripts/run-mdoc.sh
20+
rm -r /tmp/mdoc-out/
21+
- name: Jekyll build
22+
run: bundle exec jekyll build
23+
- name: HTMLProofer
24+
run: |
25+
# # Checking for docs.scala-lang/blob/master leads to a chicken and egg problem because of the edit links of new pages.
26+
bundle exec htmlproofer ./_site/\
27+
--only-4xx\
28+
--http-status-ignore "400,401,429"\
29+
--empty-alt-ignore\
30+
--allow-hash-href\
31+
--url-ignore '/https://github.com/scala/docs.scala-lang/blob/master/.*/,/www.oracle.com/'
32+

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,4 @@ _site
88
vendor/bundle
99
.idea/
1010
/coursier
11-
/tut-tmp/
1211
.sass-cache/

Dockerfile

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
FROM ruby:2.5
2+
3+
RUN gem install bundler jekyll
4+
5+
WORKDIR /srv/jekyll
6+
7+
COPY Gemfile .
8+
COPY Gemfile.lock .
9+
10+
RUN bundle install
11+

Gemfile.lock

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ GEM
4545
jekyll (~> 3.0)
4646
jekyll-watch (2.2.1)
4747
listen (~> 3.0)
48-
kramdown (2.3.0)
48+
kramdown (2.3.1)
4949
rexml
5050
kramdown-parser-gfm (1.1.0)
5151
kramdown (~> 2.0)
@@ -54,20 +54,22 @@ GEM
5454
rb-fsevent (~> 0.10, >= 0.10.3)
5555
rb-inotify (~> 0.9, >= 0.9.10)
5656
mercenary (0.3.6)
57-
mini_portile2 (2.4.0)
58-
nokogiri (1.10.10)
59-
mini_portile2 (~> 2.4.0)
57+
mini_portile2 (2.5.0)
58+
nokogiri (1.11.1)
59+
mini_portile2 (~> 2.5.0)
60+
racc (~> 1.4)
6061
nokogumbo (2.0.2)
6162
nokogiri (~> 1.8, >= 1.8.4)
6263
parallel (1.19.2)
6364
pathutil (0.16.2)
6465
forwardable-extended (~> 2.6)
6566
public_suffix (4.0.5)
67+
racc (1.5.2)
6668
rainbow (3.0.0)
6769
rb-fsevent (0.10.4)
6870
rb-inotify (0.10.1)
6971
ffi (~> 1.0)
70-
rexml (3.2.4)
72+
rexml (3.2.5)
7173
rouge (3.22.0)
7274
safe_yaml (1.0.5)
7375
sass (3.7.4)

_ba/tour/abstract-type-members.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ Trejtovi i apstraktne klase mogu imati apstraktne tipove kao članove.
1515
To znači da konkretne implementacije definišu stvarni tip.
1616
Slijedi primjer:
1717

18-
```tut
18+
```scala mdoc
1919
trait Buffer {
2020
type T
2121
val element: T
@@ -26,7 +26,7 @@ U gornjem primjeru smo definisali apstraktni tip `T`.
2626
On se koristi za opis člana `element`.
2727
Ovaj trejt možemo naslijediti u apstraktnoj klasi i dodati gornju granicu tipa za `T` da bi ga učinili preciznijim.
2828

29-
```tut
29+
```scala mdoc
3030
abstract class SeqBuffer extends Buffer {
3131
type U
3232
type T <: Seq[U]
@@ -40,7 +40,7 @@ mora biti podtip `Seq[U]` za neki novi apstraktni tip `U`.
4040
Trejtovi ili [klase](classes.html) s apstraktnim tip-članovima se često koriste u kombinaciji s instanciranjem anonimnih klasa.
4141
Radi ilustracije, pogledaćemo program koji radi s sekvencijalnim baferom koji sadrži listu integera:
4242

43-
```tut
43+
```scala mdoc
4444
abstract class IntSeqBuffer extends SeqBuffer {
4545
type U = Int
4646
}
@@ -61,7 +61,7 @@ Metoda `newIntSeqBuf` koristi anonimnu klasu kao implementaciju `IntSeqBuf` pos
6161
Često je moguće pretvoriti apstraktni tip-član u tipski parametar klase i obrnuto.
6262
Slijedi verzija gornjeg koda koji koristi tipske parametre:
6363

64-
```tut
64+
```scala mdoc:nest
6565
abstract class Buffer[+T] {
6666
val element: T
6767
}

_ba/tour/annotations.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ Redoslijed anotacijskih klauza nije bitan.
3030
Određene anotacije će uzrokovati pad kompajliranja ako određeni uslovi nisu ispunjeni.
3131
Npr, anotacija `@tailrec` osigurava da je metoda [tail-rekurzivna](https://en.wikipedia.org/wiki/Tail_call). Tail-rekurzija može zadržati memorijske zahtjeve konstantnim.
3232
Evo kako se koristi na metodi koja izračunava faktorijel:
33-
```tut
33+
```scala mdoc
3434
import scala.annotation.tailrec
3535

3636
def factorial(x: Int): Int = {

_ba/tour/basics.md

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ Izrazi su izjave koje imaju vrijednost.
3030
```
3131
Rezultate izraza možete prikazati pomoću `println`.
3232

33-
```tut
33+
```scala mdoc
3434
println(1) // 1
3535
println(1 + 1) // 2
3636
println("Hello!") // Hello!
@@ -41,7 +41,7 @@ println("Hello," + " world!") // Hello, world!
4141

4242
Rezultatima možete dodijeliti naziv pomoću ključne riječi `val`.
4343

44-
```tut
44+
```scala mdoc
4545
val x = 1 + 1
4646
println(x) // 2
4747
```
@@ -51,13 +51,13 @@ Referenciranje vrijednosti ne okida njeno ponovno izračunavanje.
5151

5252
Vrijednosti se ne mogu mijenjati.
5353

54-
```tut:fail
54+
```scala mdoc:fail
5555
x = 3 // Ovo se ne kompajlira.
5656
```
5757

5858
Tipovi vrijednosti mogu biti (automatski) zaključeni, ali možete i eksplicitno navesti tip:
5959

60-
```tut
60+
```scala mdoc:nest
6161
val x: Int = 1 + 1
6262
```
6363

@@ -67,15 +67,15 @@ Primijetite da deklaracija tipa `Int` dolazi nakon identifikatora `x`. Također
6767

6868
Varijable su kao vrijednosti, osim što ih možete promijeniti. Varijable se definišu ključnom riječju `var`.
6969

70-
```tut
70+
```scala mdoc:nest
7171
var x = 1 + 1
7272
x = 3 // Ovo se kompajlira jer je "x" deklarisano s "var" ključnom riječju.
7373
println(x * x) // 9
7474
```
7575

7676
Kao i s vrijednostima, tip možete eksplicitno navesti ako želite:
7777

78-
```tut
78+
```scala mdoc:nest
7979
var x: Int = 1 + 1
8080
```
8181

@@ -86,7 +86,7 @@ Izraze možete kombinovati okružujući ih s `{}`. Ovo se naziva blok.
8686

8787
Rezultat zadnjeg izraza u bloku je rezultat cijelog bloka, također.
8888

89-
```tut
89+
```scala mdoc
9090
println({
9191
val x = 1 + 1
9292
x + 1
@@ -99,29 +99,29 @@ Funkcije su izrazi koji primaju parametre.
9999

100100
Možete definisati anonimnu funkciju (bez imena) koja vraća cijeli broj plus jedan:
101101

102-
```tut
102+
```scala mdoc
103103
(x: Int) => x + 1
104104
```
105105

106106
Na lijevoj strani `=>` je lista parametara. Na desnoj strani je izraz koji koristi date parametre.
107107

108108
Funkcije možete i imenovati.
109109

110-
```tut
110+
```scala mdoc
111111
val addOne = (x: Int) => x + 1
112112
println(addOne(1)) // 2
113113
```
114114

115115
Funkcije mogu imati više parametara.
116116

117-
```tut
117+
```scala mdoc
118118
val add = (x: Int, y: Int) => x + y
119119
println(add(1, 2)) // 3
120120
```
121121

122122
Ili bez parametara.
123123

124-
```tut
124+
```scala mdoc
125125
val getTheAnswer = () => 42
126126
println(getTheAnswer()) // 42
127127
```
@@ -132,7 +132,7 @@ Metode izgledaju i ponašaju se vrlo slično funkcijama, ali postoji nekoliko ra
132132

133133
Metode se definišu ključnom riječju `def`. Nakon `def` slijedi naziv, lista parametara, povratni tip, i tijelo.
134134

135-
```tut
135+
```scala mdoc:nest
136136
def add(x: Int, y: Int): Int = x + y
137137
println(add(1, 2)) // 3
138138
```
@@ -141,14 +141,14 @@ Primijetite da je povratni tip deklarisan _nakon_ liste parametara i dvotačke `
141141

142142
Metode mogu imati više listi parametara.
143143

144-
```tut
144+
```scala mdoc
145145
def addThenMultiply(x: Int, y: Int)(multiplier: Int): Int = (x + y) * multiplier
146146
println(addThenMultiply(1, 2)(3)) // 9
147147
```
148148

149149
Ili bez listi parametara ikako.
150150

151-
```tut
151+
```scala mdoc
152152
def name: String = System.getProperty("name")
153153
println("Hello, " + name + "!")
154154
```
@@ -158,7 +158,7 @@ Postoje i neke druge razlike, ali zasad, možete misliti o njima kao nečemu sli
158158
Metode mogu imati višelinijske izraze također.
159159

160160
{% scalafiddle %}
161-
```tut
161+
```scala mdoc
162162
def getSquareString(input: Double): String = {
163163
val square = input * input
164164
square.toString
@@ -173,7 +173,7 @@ Zadnjo izraz u tijelu metode je povratna vrijednost metode. (Scala ima ključnu
173173

174174
Klasu možete definisati ključnom riječju `class` praćenom imenom i parametrima konstruktora.
175175

176-
```tut
176+
```scala mdoc
177177
class Greeter(prefix: String, suffix: String) {
178178
def greet(name: String): Unit =
179179
println(prefix + name + suffix)
@@ -186,7 +186,7 @@ Ne prenosi nikakvu korisnu informaciju.)
186186

187187
Instancu klase možete kreirati pomoću ključne riječi `new`.
188188

189-
```tut
189+
```scala mdoc
190190
val greeter = new Greeter("Hello, ", "!")
191191
greeter.greet("Scala developer") // Hello, Scala developer!
192192
```
@@ -198,21 +198,21 @@ Detaljniji pregled klasa biće dat [kasnije](classes.html).
198198
Scala ima poseban tip klase koji se zove "case" klasa.
199199
Po defaultu, case klase su nepromjenjive i porede se po vrijednosti. Možete ih definisati s `case class` ključnim riječima.
200200

201-
```tut
201+
```scala mdoc
202202
case class Point(x: Int, y: Int)
203203
```
204204

205205
Instancu case klase možete kreirati i bez ključne riječi `new`.
206206

207-
```tut
207+
```scala mdoc
208208
val point = Point(1, 2)
209209
val anotherPoint = Point(1, 2)
210210
val yetAnotherPoint = Point(2, 2)
211211
```
212212

213213
I porede se po vrijednosti.
214214

215-
```tut
215+
```scala mdoc
216216
if (point == anotherPoint) {
217217
println(point + " and " + anotherPoint + " are the same.")
218218
} else {
@@ -235,7 +235,7 @@ Objasnićemo ih u dubinu [kasnije](case-classes.html).
235235
Objekti su jedine instance svojih definicija. Možete misliti o njima kao singltonima svoje vlastite klase.
236236
Objekte možete definisati ključnom riječju `object`.
237237

238-
```tut
238+
```scala mdoc
239239
object IdFactory {
240240
private var counter = 0
241241
def create(): Int = {
@@ -247,7 +247,7 @@ object IdFactory {
247247

248248
Objektima možete pristupati referenciranjem njihovog imena.
249249

250-
```tut
250+
```scala mdoc
251251
val newId: Int = IdFactory.create()
252252
println(newId) // 1
253253
val newerId: Int = IdFactory.create()
@@ -262,15 +262,15 @@ Trejtovi su tipovi koji sadrže polja i metode. Više trejtova se može kombino
262262

263263
Definišu se pomoću `trait` ključne riječi.
264264

265-
```tut
265+
```scala mdoc:nest
266266
trait Greeter {
267267
def greet(name: String): Unit
268268
}
269269
```
270270

271271
Metode trejtova mogu imati defaultnu implementaciju.
272272

273-
```tut
273+
```scala mdoc:reset
274274
trait Greeter {
275275
def greet(name: String): Unit =
276276
println("Hello, " + name + "!")
@@ -279,7 +279,7 @@ trait Greeter {
279279

280280
Možete naslijediti trejtove s `extends` ključnom riječi i redefinisati (override) implementacije s `override` ključnom riječi.
281281

282-
```tut
282+
```scala mdoc
283283
class DefaultGreeter extends Greeter
284284

285285
class CustomizableGreeter(prefix: String, postfix: String) extends Greeter {
@@ -306,7 +306,7 @@ Java Virtuelna Mašina traži da se glavna metoda zove `main` i da prima jedan a
306306

307307
Koristeći objekt, možete definisati glavnu metodu ovako:
308308

309-
```tut
309+
```scala mdoc
310310
object Main {
311311
def main(args: Array[String]): Unit =
312312
println("Hello, Scala developer!")

_ba/tour/by-name-parameters.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,15 @@ previous-page: operators
1313
_By-name parametri_ (u slobodnom prevodu "po-imenu parametri") se izračunavaju samo kada se koriste.
1414
Oni su kontrastu sa _by-value parametrima_ ("po-vrijednosti parametri").
1515
Da bi parametar bio pozivan by-name, dodajte `=>` prije njegovog tipa.
16-
```tut
16+
```scala mdoc
1717
def calculate(input: => Int) = input * 37
1818
```
1919
By-name parametri imaju prednost da se ne izračunavaju ako se ne koriste u tijelu funkcije.
2020
U drugu ruku, by-value parametri imaju prednost da se izračunavaju samo jednom.
2121

2222
Ovo je primjer kako bi mogli implementirati while petlju:
2323

24-
```tut
24+
```scala mdoc
2525
def whileLoop(condition: => Boolean)(body: => Unit): Unit =
2626
if (condition) {
2727
body

0 commit comments

Comments
 (0)