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 $
Plik World.scala:
val world = "World"
println("Hello " + world + "!")
