1.1. Konsola interaktywna języka Scala

Przygodę z językiem Scala rozpoczniemy od uruchomienia konsoli interaktywnej języka za pomocą polecenia scala. Poniżej pokazano jak może wyglądać uruchomienie konsoli.

$ scala
Welcome to Scala version 2.11.7 (Java HotSpot(TM) Client VM, Java 1.8.0_05).
Type in expressions to have them evaluated.
Type :help for more information.

scala>

Jeśli wywołanie polecenia scala nie spowoduje uruchomienia konsoli, może to oznaczać, że Scala nie jest zainstalowana lub skonfigurowana poprawnie.

Po uruchomieniu, konsola wypisuje na ekranie kilka informacji. W pierwszym wierszu — dane dotyczące wersji języka oraz wersji maszyny wirtualnej JVM. W drugim wierszu konsola informuje, że wpisywanie wyrażeń spowoduje ich ewaluację. W trzecim, że wpisanie polecenia :help powoduje pokazanie większej ilości informacji. Po pojawieniu się łańcucha zachęty w postaci napisu scala>, można przystąpić do pracy.

Konsola pozwala wykonywać (ewaluować) wyrażenia języka Scala. Poniższy przykład pokazuje wynik ewaluacji wyrażenia 1+2, oznaczającego operację dodania dwóch liczb.

scala> 1+2
res0: Int = 3

scala> 

Konsola odpowiada wypisując wartość wykonanego wyrażenia, którą jest liczba 3, jego typ — Int, oznaczający liczbę całkowitą, a także symbol res0, któremu przypisany został wynik, i który może być używany w kolejnych wyrażeniach. Konsola ponownie wypisuje łańcuch zachęty, co oznacza możliwość wpisania kolejnego polecenia. Poniższe wyrażenie mnoży poprzednio obliczoną wartość przez dwa.

scala> 2*res0
res1: Int = 6

Wyrażenie z kolejnego przykładu łączy dwa łańcuchy znakowe za pomocą operacji +. Każdy z łańcuchów jest umieszczony w cudzysłowach.

scala> "Hello World" + "!"
res2: String = Hello World!

Wpisywane w konsoli wyrażenia mogą być umieszczone w wielu wierszach. W takim przypadku, w kolejnych wierszach konsola nie wypisuje łańcucha zachęty scala>, ale zastępuje go kreską pionową. Poniższe wyrażenie rozpoczyna się od nawiasu i w pierwszym wierszu ten nawias nie zostaje zamknięty. Wobec tego Scala nie dokonuje ewaluacji wyrażenia, ale pozwala na kontynuowanie go w nowym wierszu.

scala> ( 1 +
     | 

Wpisanie w drugim wierszu pozostałej części wyrażenia powoduje wyświetlenie wyniku.

scala> ( 1 +
     | 2 )
res3: Int = 3

Jeżeli rozpoczęliśmy wyrażenie, ale nie mamy zamiaru kontynuować go w kolejnych wierszach, możemy wpisać dwukrotnie wiersz pusty. Konsola zakończy wprowadzanie bieżącego wyrażenia bez jego wykonywania.

scala> ( 1 +
     | 
     | 
You typed two blank lines.  Starting a new command.

Konsola umożliwia wykonanie pewnych poleceń, których nazwy rozpoczynają się od dwukropka. Polecenie :help pokazuje informacje na temat dostępnych poleceń.

scala> :help
All commands can be abbreviated, e.g., :he instead of :help.
:edit <id>|<line>        edit history
:help [command]          print this summary or command-specific help
:history [num]           show the history (optional num is commands to show)
:h? <string>             search the history
:imports [name name ...] show import history, identifying sources of names
:implicits [-v]          show the implicits in scope
:javap <path|class>      disassemble a file or class name
:line <id>|<line>        place line(s) at the end of history
:load <path>             interpret lines in a file
:paste [-raw] [path]     enter paste mode or paste a file
:power                   enable power user mode
:quit                    exit the interpreter
:replay [options]        reset the repl and replay all previous commands
:require <path>          add a jar to the classpath
:reset [options]         reset the repl to its initial state, forgetting all session entries
:save <path>             save replayable session to a file
:sh <command line>       run a shell command (result is implicitly => List[String])
:settings <options>      update compiler options, if possible; see reset
:silent                  disable/enable automatic printing of results
:type [-v] <expr>        display the type of an expression without evaluating it
:kind [-v] <expr>        display the kind of expression's type
:warnings                show the suppressed warnings from the most recent line which had any

Polecenie :load pozwala wykonać instrukcje znajdujące się w pliku tekstowym, na przykład takim jak plik World.scala.

Plik World.scala:
val world = "World"
println("Hello " + world + "!")

W poniższym przykładzie wykonujemy instrukcje z tego pliku w konsoli.

scala> :load World.scala
Loading World.scala...
world: String = World
Hello World!

Konsola wypisała trzy wiersze. W pierwszym znajduje się informacja o ładowaniu treści pliku. Podana jest nazwa pliku. Kolejne wiersze pokazują rezultaty ładowania. Ponieważ w pliku znajdowała się definicja wartości o nazwie world, po załadowaniu możemy w konsoli używać tej wartości.

scala> world
res5: String = World

W konsoli możemy używać klawisza tabulacji do uzupełniania częściowo wpisanych wyrażeń. Dla przykładu wpiszmy w konsoli następujące znaki.

scala> wor

Wcześniej została zdefiniowana wartość o nazwie rozpoczynającej się od wpisanych znaków. Jeśli teraz wciśnięty zostanie klawisz tabulacji, konsola uzupełni nazwę.

scala> world

Teraz wystarczy wcisnąć klawisz Enter, aby zobaczyć wartość.

scala> world
res6: String = World

Wyjście z konsoli jest możliwe za pomocą polecenia :quit

scala> :quit

$

Można użyć postaci skróconej, na przykład :q. Dotyczy to również innych poleceń.

scala> :q

$

Język programowania Scala Wydanie 2. Copyright © Grzegorz Balcerek 2016

Licencja Creative Commons

Ten utwór jest dostępny na licencji Creative Commons Uznanie autorstwa-Na tych samych warunkach 4.0 Międzynarodowe.

Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.