|
| 1 | +--- |
| 2 | +layout: multipage-overview |
| 3 | +title: REPL |
| 4 | +scala3: true |
| 5 | +partof: scala3-book |
| 6 | +overview-name: "Scala 3 — Book" |
| 7 | +type: chapter |
| 8 | +description: В этом разделе представлено введение в Scala REPL. |
| 9 | +language: ru |
| 10 | +num: 6 |
| 11 | +previous-page: taste-hello-world |
| 12 | +next-page: taste-vars-data-types |
| 13 | +--- |
| 14 | + |
| 15 | +Scala REPL (“Read-Evaluate-Print-Loop”) - это интерпретатор командной строки, |
| 16 | +который используется в качестве “игровой площадки” для тестирования Scala кода. |
| 17 | +Для того чтобы запустить сеанс REPL, надо выполнить команду `scala` или `scala3` в зависимости от операционной системы, |
| 18 | +затем будет выведено приглашение “Welcome”, подобное этому: |
| 19 | + |
| 20 | +{% tabs command-line class=tabs-scala-version %} |
| 21 | + |
| 22 | +{% tab 'Scala 2' for=command-line %} |
| 23 | +```bash |
| 24 | +$ scala |
| 25 | +Welcome to Scala {{site.scala-version}} (OpenJDK 64-Bit Server VM, Java 1.8.0_342). |
| 26 | +Type in expressions for evaluation. Or try :help. |
| 27 | + |
| 28 | +scala> _ |
| 29 | +``` |
| 30 | +{% endtab %} |
| 31 | + |
| 32 | +{% tab 'Scala 3' for=command-line %} |
| 33 | +```bash |
| 34 | +$ scala |
| 35 | +Welcome to Scala {{site.scala-3-version}} (1.8.0_322, Java OpenJDK 64-Bit Server VM). |
| 36 | +Type in expressions for evaluation. Or try :help. |
| 37 | + |
| 38 | +scala> _ |
| 39 | +``` |
| 40 | +{% endtab %} |
| 41 | + |
| 42 | +{% endtabs %} |
| 43 | + |
| 44 | +REPL — это интерпретатор командной строки, поэтому он ждет, пока вы что-нибудь наберете. |
| 45 | +Теперь можно вводить выражения Scala, чтобы увидеть, как они работают: |
| 46 | + |
| 47 | +{% tabs expression-one %} |
| 48 | +{% tab 'Scala 2 and 3' for=expression-one %} |
| 49 | +```` |
| 50 | +scala> 1 + 1 |
| 51 | +val res0: Int = 2 |
| 52 | +
|
| 53 | +scala> 2 + 2 |
| 54 | +val res1: Int = 4 |
| 55 | +```` |
| 56 | +{% endtab %} |
| 57 | +{% endtabs %} |
| 58 | + |
| 59 | +Как показано в выводе, если не присваивать переменную результату выражения, |
| 60 | +REPL автоматически создает для вас переменные с именами `res0`, `res1` и т.д. |
| 61 | +Эти имена переменных можно использовать в последующих выражениях: |
| 62 | + |
| 63 | +{% tabs expression-two %} |
| 64 | +{% tab 'Scala 2 and 3' for=expression-two %} |
| 65 | +```` |
| 66 | +scala> val x = res0 * 10 |
| 67 | +val x: Int = 20 |
| 68 | +```` |
| 69 | +{% endtab %} |
| 70 | +{% endtabs %} |
| 71 | + |
| 72 | +Обратите внимание, что в REPL output также показываются результаты выражений. |
| 73 | + |
| 74 | +В REPL можно проводить всевозможные эксперименты. |
| 75 | +В этом примере показано, как создать, а затем вызвать метод `sum`: |
| 76 | + |
| 77 | +{% tabs expression-three %} |
| 78 | +{% tab 'Scala 2 and 3' for=expression-three %} |
| 79 | +```` |
| 80 | +scala> def sum(a: Int, b: Int): Int = a + b |
| 81 | +def sum(a: Int, b: Int): Int |
| 82 | +
|
| 83 | +scala> sum(2, 2) |
| 84 | +val res2: Int = 4 |
| 85 | +```` |
| 86 | +{% endtab %} |
| 87 | +{% endtabs %} |
| 88 | + |
| 89 | +Также можно использовать игровую среду на основе браузера [scastie.scala-lang.org](https://scastie.scala-lang.org). |
| 90 | + |
| 91 | +Если вы предпочитаете писать код в текстовом редакторе, а не в консоли, то можно использовать [worksheet]. |
| 92 | + |
| 93 | +[worksheet]: {% link _overviews/scala3-book/tools-worksheets.md %} |
0 commit comments