diff --git a/_getting-started/index.md b/_getting-started/index.md index 03af9270c4..a26af28495 100644 --- a/_getting-started/index.md +++ b/_getting-started/index.md @@ -2,7 +2,7 @@ layout: singlepage-overview title: Getting Started partof: getting-started -languages: [fr, ja] +languages: [fr, ja, uk] includeTOC: true redirect_from: "/getting-started.html" diff --git a/_getting-started/intellij-track/building-a-scala-project-with-intellij-and-sbt.md b/_getting-started/intellij-track/building-a-scala-project-with-intellij-and-sbt.md index 8d625bad57..c335e94af2 100644 --- a/_getting-started/intellij-track/building-a-scala-project-with-intellij-and-sbt.md +++ b/_getting-started/intellij-track/building-a-scala-project-with-intellij-and-sbt.md @@ -2,7 +2,7 @@ title: Building a Scala Project with IntelliJ and sbt layout: singlepage-overview partof: building-a-scala-project-with-intellij-and-sbt -languages: [ja] +languages: [ja, uk] disqus: true previous-page: getting-started/intellij-track/getting-started-with-scala-in-intellij next-page: testing-scala-in-intellij-with-scalatest diff --git a/_getting-started/intellij-track/getting-started-with-scala-in-intellij.md b/_getting-started/intellij-track/getting-started-with-scala-in-intellij.md index 6bab3d3d14..1d06687401 100644 --- a/_getting-started/intellij-track/getting-started-with-scala-in-intellij.md +++ b/_getting-started/intellij-track/getting-started-with-scala-in-intellij.md @@ -2,7 +2,7 @@ title: Getting Started with Scala in IntelliJ layout: singlepage-overview partof: getting-started-with-scala-in-intellij -languages: [ja] +languages: [ja, uk] disqus: true next-page: building-a-scala-project-with-intellij-and-sbt diff --git a/_getting-started/intellij-track/testing-scala-in-intellij-with-scalatest.md b/_getting-started/intellij-track/testing-scala-in-intellij-with-scalatest.md index fb34580984..bfc23717f8 100644 --- a/_getting-started/intellij-track/testing-scala-in-intellij-with-scalatest.md +++ b/_getting-started/intellij-track/testing-scala-in-intellij-with-scalatest.md @@ -2,7 +2,7 @@ title: Testing Scala in IntelliJ with ScalaTest layout: singlepage-overview partof: testing-scala-in-intellij-with-scalatest -languages: [ja] +languages: [ja, uk] disqus: true previous-page: building-a-scala-project-with-intellij-and-sbt diff --git a/_getting-started/sbt-track/getting-started-with-scala-and-sbt-on-the-command-line.md b/_getting-started/sbt-track/getting-started-with-scala-and-sbt-on-the-command-line.md index 5c7bc37325..47ffcbf72e 100644 --- a/_getting-started/sbt-track/getting-started-with-scala-and-sbt-on-the-command-line.md +++ b/_getting-started/sbt-track/getting-started-with-scala-and-sbt-on-the-command-line.md @@ -2,7 +2,7 @@ title: Getting Started with Scala and sbt on the Command Line layout: singlepage-overview partof: getting-started-with-scala-and-sbt-on-the-command-line -languages: [ja] +languages: [ja, uk] disqus: true next-page: testing-scala-with-sbt-on-the-command-line diff --git a/_getting-started/sbt-track/testing-scala-with-sbt-on-the-command-line.md b/_getting-started/sbt-track/testing-scala-with-sbt-on-the-command-line.md index accc081592..6a2db51a93 100644 --- a/_getting-started/sbt-track/testing-scala-with-sbt-on-the-command-line.md +++ b/_getting-started/sbt-track/testing-scala-with-sbt-on-the-command-line.md @@ -2,7 +2,7 @@ title: Testing Scala with sbt and ScalaTest on the Command Line layout: singlepage-overview partof: testing-scala-with-sbt-on-the-command-line -languages: [ja] +languages: [ja, uk] disqus: true previous-page: getting-started-with-scala-and-sbt-on-the-command-line diff --git a/_includes/_uk/getting-started.md b/_includes/_uk/getting-started.md new file mode 100644 index 0000000000..c4f1d6f546 --- /dev/null +++ b/_includes/_uk/getting-started.md @@ -0,0 +1,209 @@ +Інструкції нижче стосуються як Scala 2 так, і та Scala 3. + +## Спробуйте Scala без інсталяції + +Щоб швидко почати експериментувати зі Scala, відкрийте “Scastie” у вашому браузері. +_Scastie_ це онлайн “пісочниця”, де ви можете експериментувати з прикладами на Scala та подивитись як все працює, з доступом до всіх компіляторів Scala та доступних бібліотек. + +> Scastie підтримує як Scala 2 так, і Scala 3, але за замовчування +> використовується Scala 3. Якщо ж ви шукаєте приклади на Scala 2, +> [натисніть тут](https://scastie.scala-lang.org/MHc7C9iiTbGfeSAvg8CKAA). + +## Встановіть Scala на ваш комп'ютер + +Інсталяція Scala означає встановлення різних command-line інструментів, таких як компілятор Scala та інструменти для збірки. +Ми радимо використовувати інсталятор "Coursier", який автоматично встановить всі необхідні залежності, але ви можете встановити окремо кожен інструмент. + +### За допомогою інсталятора Scala (рекомендовано) + +Інсталятор Scala називається [Coursier](https://get-coursier.io/docs/cli-overview), а його основна команда має назву `cs`. +Він гарантує, що JVM та стандартні інструменти Scala встановлені на вашій системі. +Щоб встановити його на вашій системі виконайте наступні інструкції. + + +{% tabs install-cs-setup-tabs class=platform-os-options %} + + +{% tab macOS for=install-cs-setup-tabs %} +Виконайте наступну команду в терміналі, виконуючи всі спливаючі інструкції: +{% include code-snippet.html language='bash' codeSnippet=site.data.setup-scala.macOS-brew %} +{% altDetails cs-setup-macos-nobrew "Якщо ви не використовуєте Homebrew:" %} +{% include code-snippet.html language='bash' codeSnippet=site.data.setup-scala.macOS-default %} +{% endaltDetails %} +{% endtab %} + + + +{% tab Linux for=install-cs-setup-tabs %} +Виконайте наступну команду в терміналі, виконуючи всі спливаючі інструкції: +{% include code-snippet.html language='bash' codeSnippet=site.data.setup-scala.linux %} +{% endtab %} + + + +{% tab Windows for=install-cs-setup-tabs %} +Завантажте та запустіть [the Scala installer for Windows]({{site.data.setup-scala.windows-link}}) +інсталятор на основі Coursier, виконуючи всі спливаючі інструкції. +{% endtab %} + + + +{% tab Other for=install-cs-setup-tabs defaultTab %} + +Дотримуйтесь документації від Coursier з того, +[як встановити і запустити `cs setup`](https://get-coursier.io/docs/cli-installation). +{% endtab %} + + +{% endtabs %} + + + +{% altDetails testing-your-setup 'Перевірити налаштування' %} +Перевірте ваші налаштування виконавши команду `scala -version`, яка має вивести: +```bash +$ scala -version +Scala code runner version {{site.scala-3-version}} -- Copyright 2002-2022, LAMP/EPFL +``` +Якщо це не спрацювало, необхідно завершити сеанс та зайти в систему знову (або перезавантажити), щоб зміни застосувались на вашій системі. +{% endaltDetails %} + + + +Разом з менеджментом JVM-ів, `cs setup` також встановлює корисні command-line інструменти: + +| Команда | Опис | +|---------------|----------------------------------------------------------------------------------------| +| `scalac` | компілятор Scala | +| `scala` | інтерактивне середовище Scala та інструмент для запуску скриптів | +| `scala-cli` | [Scala CLI](https://scala-cli.virtuslab.org), інтерактивні інструменти для Scala | +| `sbt`, `sbtn` | Інструмент збірки [sbt](https://www.scala-sbt.org/) | +| `amm` | [Ammonite](https://ammonite.io/) розширене інтерактивне середовище (REPL) | +| `scalafmt` | [Scalafmt](https://scalameta.org/scalafmt/) призначений для форматування коду на Scala | + +Для більш детальної інформації про `cs`, прочитайте +[документацію coursier-cli](https://get-coursier.io/docs/cli-overview). + +> `cs setup` встановлює компілятор Scala 3 та інтерактивне середовище за замовчування (команди `scalac` та +> `scala` відповідно). Незалежно від того, чи збираєтеся ви використовувати Scala 2 чи 3, +> тому що більшість проєктів використовує інструменти для збірки, +> які використовують правильні версії Scala незалежно від того, яка встановлена "глобально". +> Однак, ви завжди можете запустити певну версію Scala за допомогою +> ``` +> $ cs launch scala:{{ site.scala-version }} +> $ cs launch scalac:{{ site.scala-version }} +> ``` +> Якщо ви надаєте перевагу Scala 2 за замовчуванням, ви можете примусово встановити певну версію: +> ``` +> $ cs install scala:{{ site.scala-version }} scalac:{{ site.scala-version }} +> ``` + +### ...або вручну + +Вам необхідно лише два інструменти, для того, щоб скомпілювати, запустити, протестувати й упакувати Scala проєкт: Java 8 або 11, і sbt. +Щоб встановити їх вручну: + +1. Якщо Java 8 або 11 не встановлені, необхідно завантажити + Java з [Oracle Java 8](https://www.oracle.com/java/technologies/javase-jdk8-downloads.html), [Oracle Java 11](https://www.oracle.com/java/technologies/javase-jdk11-downloads.html), + або [AdoptOpenJDK 8/11](https://adoptopenjdk.net/). Перевірте [сумісність JDK](/overviews/jdk-compatibility/overview.html) для Scala/Java. +1. Встановіть [sbt](https://www.scala-sbt.org/download.html) + +## Створити проєкт "Hello World" з sbt + +Після встановлення sbt ви готові до створення проєкту на Scala, який ми розглянемо в подальших розділах. + +Щоб створити проєкт, ви можете використати або термінал, або IDE. +Якщо ви знайомі з командним рядком, ми рекомендуємо такий підхід. + +### За допомогою командного рядка + +Інструмент sbt призначений для збірки проєкту на Scala. sbt компілює, запускає, +та тестує ваш код на Scala. (Також він публікує бібліотеки та виконує багато інших задач.) + +Щоб створити новий Scala проєкт за допомогою sbt: + +1. Перейдіть (`cd`) в пусту директорію. +1. Виконайте команду `sbt new scala/scala3.g8`, щоб створити проєкт на Scala 3, або `sbt new scala/hello-world.g8`, щоб створити проєкт на Scala 2. + Команда завантажує шаблон проєкту з GitHub. + Також, створює директорію `target`, яку ви можете проігнорувати. +1. Коли буде запропоновано, оберіть назву програми `hello-world`. В результаті буде створено проєкт "hello-world". +1. Подивимося, що щойно було створено: + +``` +- hello-world + - project (sbt uses this for its own files) + - build.properties + - build.sbt (sbt's build definition file) + - src + - main + - scala (весь ваш код на Scala буде тут) + - Main.scala (Точка входу в програму) <-- це все, що потрібно наразі +``` + +Більше документації про sbt можна знайти у [Книзі по Scala](/scala3/book/tools-sbt.html) (див. [тут](/overviews/scala-book/scala-build-tool-sbt.html) версію для Scala 2) +та в офіційній [документації](https://www.scala-sbt.org/1.x/docs/index.html) sbt + +### За допомогою IDE + +Ви можете пропустити подальші кроки та перейти до [Створення Scala проєкту з IntelliJ і sbt](/uk/getting-started/intellij-track/building-a-scala-project-with-intellij-and-sbt.html) + + +## Відкрити проєкт hello-world + +Використаймо IDE, щоб відкрити проєкт. Найбільш популярними є IntelliJ та VSCode. +Обидва з них мають багатий функціонал, але ви також можете використати [багато інших редакторів.](https://scalameta.org/metals/docs/editors/overview.html) + +### За допомогою IntelliJ + +1. Завантажте та встановіть [IntelliJ Community Edition](https://www.jetbrains.com/idea/download/) +1. Встановіть плагін Scala дотримуючись [інструкції з встановлення плагінів в IntelliJ](https://www.jetbrains.com/help/idea/managing-plugins.html) +1. Відкрийте файл `build.sbt` та оберіть *Відкрити як проєкт* (*Open as a project*) + +### За допомогою VSCode та metals + +1. Завантажте [VSCode](https://code.visualstudio.com/Download) +1. Встановіть розширення Metals з [the Marketplace](https://marketplace.visualstudio.com/items?itemName=scalameta.metals) +1. Відкрийте директорію, що містить файл `build.sbt` (це має бути директорія `hello-world` якщо ви виконали попередні інструкції). Коли буде запропоновано, оберіть *Імпортувати збірку* (*Import build*). + +>[Metals](https://scalameta.org/metals) це “Сервер мови Scala” який забезпечує можливість написання коду на Scala в VS Code та інших редакторах на кшталт [Atom, Sublime Text, and more](https://scalameta.org/metals/docs/editors/overview.html), використовуючи Language Server Protocol. +> +> Під капотом, Metals комунікує з інструментом збірки використовуючи +> [Build Server Protocol (BSP)](https://build-server-protocol.github.io/). Більш детально про те, як працює Metals, можна подивитись на [“Write Scala in VS Code, Vim, Emacs, Atom and Sublime Text with Metals”](https://www.scala-lang.org/2019/04/16/metals.html). + +### Внесення змін в початковий код + +Перегляньте ці два файли у вашому IDE: + +- _build.sbt_ +- _src/main/scala/Main.scala_ + +Коли ви будете запускати ваш проєкт у наступному кроці, то будуть використані конфігурації з _build.sbt_ для запуску коду в _src/main/scala/Main.scala_. + +## Запустити Hello World + +Якщо вам зручно користуватися IDE, ви можете запустити код в _Main.scala_ з вашого IDE. + +В іншому випадку ви можете запустити програму через термінал, виконавши такі дії: + +1. `cd` в `hello-world`. +1. Запустіть `sbt`. Це відкриє консоль sbt. +1. Наберіть `~run`. Символ `~` опціональний і змушує sbt повторно запускатися після кожного збереження файлу, + що забезпечує швидкий цикл редагування/запуск/налагодження. sbt також створить директорію `target`, яку ви можете проігнорувати. + +Коли ви закінчите експериментувати з вашим проєктом, натисніть `[Enter]` щоб перервати команду `run`. +Потім наберіть `exit` або затисніть `[Ctrl+D]` щоб вийти з sbt та повернутись до вашого командного рядка. + +## Наступні кроки + +Після того, як ви закінчите наведені вище посібники, спробуйте пройти: + +* [Книга по Scala](/scala3/book/introduction.html) (версія по Scala 2 [тут](/overviews/scala-book/introduction.html)), яка містить коротких ознайомчих уроків з основних можливостей Scala. +* [Тур по Scala](/tour/tour-of-scala.html) for bite-sized introductions to Scala's features. +* [Навчальні ресурси](/learn.html), що містять інтерактивні онлайн путівники та курси. +* [Наш список деяких популярних книжок по Scala](/books.html). +* [Посібник з міграції](/scala3/guides/migration/compatibility-intro.html) допомагає перевести ваш наявний проєкт зі Scala 2 на Scala 3. + +## Отримати допомогу +Існує безліч поштових розсилок та чатів в режимі реального часу, якщо ви захочете зв'язатися з іншими користувачами Scala. Перейдіть на сторінку нашої [спільноти](https://scala-lang.org/community/), щоб побачити перелік можливих способів та попросити про допомогу. diff --git a/_uk/getting-started/index.md b/_uk/getting-started/index.md new file mode 100644 index 0000000000..0079a2128f --- /dev/null +++ b/_uk/getting-started/index.md @@ -0,0 +1,9 @@ +--- +layout: singlepage-overview +title: Перші кроки +partof: getting-started +language: uk +includeTOC: true +--- + +{% include _uk/getting-started.md %} diff --git a/_uk/getting-started/intellij-track/building-a-scala-project-with-intellij-and-sbt.md b/_uk/getting-started/intellij-track/building-a-scala-project-with-intellij-and-sbt.md new file mode 100644 index 0000000000..18da5a8ea5 --- /dev/null +++ b/_uk/getting-started/intellij-track/building-a-scala-project-with-intellij-and-sbt.md @@ -0,0 +1,101 @@ +--- +title: Створення проєкту на Scala з IntelliJ і sbt +layout: singlepage-overview +partof: building-a-scala-project-with-intellij-and-sbt +language: uk +disqus: true +previous-page: /uk/getting-started/intellij-track/getting-started-with-scala-in-intellij +next-page: /uk/testing-scala-in-intellij-with-scalatest +--- + +В цьому посібнику ми побачимо як будувати Scala проєкти використовуючи [sbt](https://www.scala-sbt.org/1.x/docs/index.html). +sbt — популярний інструмент для компіляції, запуску та тестування проєктів Scala будь-якої складності. +Використання інструменту збірки, такого як sbt (або Maven/Gradle), стає необхідним, коли ви створюєте проєкти із залежностями або кількома файлами коду. +Ми припускаємо, що ви завершили [перший посібник](./getting-started-with-scala-in-intellij.html). + +## Створення проєкту +У цьому розділі ми покажемо вам, як створити проєкт в IntelliJ. Однак, якщо вам +комфортніше працювати у терміналі, ми рекомендуємо подивитись [початок роботи зі Scala і sbt у командному рядку](/uk/getting-started/sbt-track/getting-started-with-scala-and-sbt-on-the-command-line.html) +і потім повернутися сюди до розділу «Написання коду на Scala». + +1. Якщо ви ще не створили проєкт у терміналі, запустіть IntelliJ та оберіть "Створити новий проєкт (Create New Project)" + * На панелі зліва оберіть Scala, а на панелі справа оберіть sbt + * Натисніть **Next** + * Назвіть ваш проєкт "SbtExampleProject" +1. Якщо ви вже створили проєкт через термінал, запустіть IntelliJ, оберіть *Імпортувати проєкт (Import Project)* та відкрийте файл `build.sbt` вашого проєкту +1. Впевніться, що **версія JDK** 1.8 або вище, та **версія sbt** 0.13.13 та вище +1. Натисніть **Use auto-import**, щоб залежності автоматично завантажились +1. Натисніть **Finish** + +## Розуміння структури директорій +Завдяки sbt створюються директорії, які можуть бути корисні у разі розробки складніших проєктів. +Поки що ви можете проігнорувати більшість із них, але ось для чого це все: + +``` +- .idea (IntelliJ files) +- project (plugins and additional settings for sbt) +- src (source files) + - main (application code) + - java (Java source files) + - scala (Scala source files) <-- This is all we need for now + - scala-2.12 (Scala 2.12 specific files) + - test (unit tests) +- target (generated files) +- build.sbt (build definition file for sbt) +``` + + +## Написання коду на Scala +1. На панелі **Project** зліва розкрийте `SbtExampleProject` => `src` => `main` +1. Натисніть праву кнопку миші, `scala` та оберіть **New** => **Package** +1. Назвіть пакет `example` та натисніть **OK** (або просто натисніть клавішу Enter або Return). +1. Натисніть праву кнопку миші на пакет `example` та оберіть **New** => **Scala class** (якщо ви не бачите цю опцію, натисніть праву кнопку миші на `SbtExampleProject`, натисніть **Add Frameworks Support**, оберіть **Scala** та продовжить) +1. Назвіть клас `Main` та змініть **Kind** на `Object`. +1. Змініть код у класі на наступний: + +``` +object Main extends App { + val ages = Seq(42, 75, 29, 64) + println(s"The oldest person is ${ages.max}") +} +``` + +Примітка: IntelliJ має власну реалізацію компілятора Scala, тому іноді ваш код є правильним, навіть якщо IntelliJ вказує інше. +Ви завжди можете перевірити у командному рядку, чи може sbt запустити ваш проєкт. + +## Запуск проєкту +1. З меню **Run** оберіть **Edit configurations** +1. Натисніть кнопку **+** та оберіть **sbt Task**. +1. Назвіть його `Run the program`. +1. В полі **Tasks** наберіть `~run`. Опція `~` змушує sbt перебудовувати та перезапускати проєкт, коли ви зберігаєте зміни у файлі проєкту. +1. Натисніть **OK**. +1. В меню **Run** натисніть **Run 'Run the program'**. +1. В коді змініть `75` на `61` та подивіться оновлений результат в консолі. + +## Додавання залежностей +Давайте ненадовго змістимо фокус на використання опублікованих бібліотек для забезпечення додаткової функціональності ваших програм. +1. Відкрийте `build.sbt` та додайте наступний рядок: + +``` +libraryDependencies += "org.scala-lang.modules" %% "scala-parser-combinators" % "1.1.2" +``` + +Тут `libraryDependencies` є набором залежностей та використовуючи `+=`, +ми додаємо залежність [scala-parser-combinators](https://github.com/scala/scala-parser-combinators) до набору залежностей, +які необхідні для sbt та які завантажаться при його запуску. Тепер в будь-якому Scala файлі ви можете використати +класи, об'єкти тощо з scala-parser-combinators через звичайний "import". + +Більше опублікованих бібліотек можна знайти на +[Scaladex](https://index.scala-lang.org/) - індекс бібліотек Scala, місце куди ви можете зайти, щоб скопіювати інформацію про бібліотеку +та додати у ваш `build.sbt` файл. + +## Наступні кроки + +Перейдіть до наступного навчального матеріалу з серії _початок роботи з IntelliJ_, та дізнайтесь про [тестування Scala в IntelliJ зі ScalaTest](testing-scala-in-intellij-with-scalatest.html). + +**або** + +* [Книга по Scala](/overviews/scala-book/introduction.html), що є набором коротких вступних уроків з основних особливостей. +* [Тур по Scala](/tour/tour-of-scala.html) серія коротких оглядових статей про можливості Scala. +* Продовжить вчити Scala інтерактивно виконуючи + [вправи зі Scala](https://www.scala-exercises.org/scala_tutorial). \ No newline at end of file diff --git a/_uk/getting-started/intellij-track/getting-started-with-scala-in-intellij.md b/_uk/getting-started/intellij-track/getting-started-with-scala-in-intellij.md new file mode 100644 index 0000000000..2d44b3ef34 --- /dev/null +++ b/_uk/getting-started/intellij-track/getting-started-with-scala-in-intellij.md @@ -0,0 +1,77 @@ +--- +title: Перші кроки зі Scala в IntelliJ +layout: singlepage-overview +partof: getting-started-with-scala-in-intellij +language: uk +disqus: true +next-page: /uk/building-a-scala-project-with-intellij-and-sbt +--- + +У цьому посібнику буде розглянемо як створити мінімальний проєкт Scala за допомогою IntelliJ IDE з плагіном Scala. +У цьому посібнику IntelliJ завантажить для вас Scala. + +## Встановлення +1. Впевніться, що ви вже встановили Java 8 JDK (також відому як 1.8) + * Запустіть `javac -version` у командному рядку і впевніться, що бачите + `javac 1.8.___` + * Якщо у вас не встановлена версія 1.8 або вище, [встановіть JDK](https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) +1. Далі, завантажте та встановіть [IntelliJ Community Edition](https://www.jetbrains.com/idea/download/) +1. Після того, як ви запустили IntelliJ, ви можете завантажити й встановити плагін Scala за інструкцією + [як встановлювати плагіни IntelliJ](https://www.jetbrains.com/help/idea/installing-updating-and-uninstalling-repository-plugins.html) (шукайте "Scala" в меню плагінів.) + +Під час створення проєкту встановиться остання версія Scala. +Примітка: якщо ви хочете відкрити наявний проєкт Scala, ви можете натиснути **Open** під час запуску IntelliJ. + +## Створення проєкту +1. Запустіть IntelliJ та натисніть **File** => **New** => **Project** +1. На панелі зліва оберіть Scala, а на панелі справа - IDEA. +1. Назвіть проєкт **HelloWorld** +1. Припускаємо, що ви вперше створюєте проєкт Scala за допомогою IntelliJ, + вам потрібно буде встановити Scala SDK. В полі праворуч від Scala SDK натисніть **Create**. +1. Оберіть останню версію (наприклад, {{ site.scala-version }}) та натисніть **Download**. Це може зайняти декілька хвилин, але наступні проєкти зможуть використати той же SDK. +1. Після того як створена SDK та ви повернулись до вікна "New Project", натисніть **Finish**. + + +## Написання коду + +1. Зліва, на панелі **Project** клацніть кнопкою миші на `src` та оберіть **New** => **Scala class**. + Якщо ви не бачите **Scala class**, клацніть правою кнопкою миші на **HelloWorld** та оберіть **Add Framework Support...**, натисніть **Scala** та продовжить. + Якщо ви бачите **Error: library is not specified**, ви можете або натиснути на кнопку завантаження або обрати шлях бібліотеки вручну. + Якщо ви бачите тільки **Scala Worksheet** спробуйте розкрити директорію `src` та піддиректорію `main` та клацніть правою кнопкою миші на теку `scala`. +1. Назвіть клас `Hello` та змініть його **Kind** на `object`. +1. Змініть код класу на наступний: + +``` +object Hello extends App { + println("Hello, World!") +} +``` + +## Запуск +* Клацніть правою кнопкою миші `Hello` та оберіть **Run 'Hello'**. +* Готово! + +## Експерименти зі Scala +Хорошим способом випробувати код є Scala Worksheets + +1. Зліва, на панелі проєкту, клацніть правою кнопкою миші на `src` та оберіть **New** => **Scala Worksheet**. +2. Назвіть робочий лист Scala "Mathematician". +3. Впишіть наступний код в робочий лист: + +``` +def square(x: Int) = x * x + +square(2) +``` + +Коли ви змінюєте свій код, ви побачите, як він виконується на панелі справа. +Якщо ви не бачите правої панелі, клацніть правою кнопкою миші на робочому аркуші Scala на панелі проєкту та натисніть Evaluate Worksheet. + + +## Наступні кроки + +Тепер ви знаєте, як створити простий проєкт Scala, який можна використовувати, +щоб почати вивчати мову. У наступному уроці ми познайомимося з важливим інструментом збірки під назвою sbt, +який можна використовувати як для простих проєктів, так і продакшн програм. + +Наступне: [Створення проєкту на Scala з IntelliJ і sbt](building-a-scala-project-with-intellij-and-sbt.html) diff --git a/_uk/getting-started/intellij-track/testing-scala-in-intellij-with-scalatest.md b/_uk/getting-started/intellij-track/testing-scala-in-intellij-with-scalatest.md new file mode 100644 index 0000000000..87c8c09bdd --- /dev/null +++ b/_uk/getting-started/intellij-track/testing-scala-in-intellij-with-scalatest.md @@ -0,0 +1,73 @@ +--- +title: Тестування Scala в IntelliJ зі ScalaTest +layout: singlepage-overview +partof: testing-scala-in-intellij-with-scalatest +language: uk +disqus: true +previous-page: /uk/building-a-scala-project-with-intellij-and-sbt +--- + +Існує кілька бібліотек і методологій тестування для Scala, +але в цьому посібнику ми продемонструємо один популярний варіант для фреймворку ScalaTest, +що називається [FunSuite](https://www.scalatest.org/getting_started_with_fun_suite). + +Ми припускаємо, що ви знаєте [як створити проєкт з IntelliJ](building-a-scala-project-with-intellij-and-sbt.html). + +## Налаштування +1. Створіть sbt проєкт в IntelliJ. +1. Додайте залежність ScalaTest: + 1. Додайте залежність ScalaTest у файл `build.sbt` вашого проєкту: + ``` + libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.11" % Test + ``` + 1. Ви побачите сповіщення "build.sbt was changed", оберіть **auto-import**. + 1. Ці дві дії призведуть до того, що `sbt` завантажить бібліотеку ScalaTest. + 1. Зачекайте завершення синхронізації `sbt`; інакше `AnyFunSuite` та `test()` не розпізнаються. +1. На панелі проєкту розкрийте `src` => `main`. +1. Клацніть правою кнопкою миші на `scala` та оберіть **New** => **Scala class**. +1. Назвіть його `CubeCalculator` та змініть **Kind** на `object` та натисніть Enter або двічі клацніть на `object`. +1. Замініть код на наступний: + ``` + object CubeCalculator extends App { + def cube(x: Int) = { + x * x * x + } + } + ``` + +## Створення тесту +1. Зліва на панелі проєкту розкрийте `src` => `test`. +1. Клацніть правою кнопкою миші на `scala` та оберіть **New** => **Scala class**. +1. Назвіть клас `CubeCalculatorTest` та натисніть Enter або двічі клацніть на `class`. +1. Замініть код на наступний: + ``` + import org.scalatest.funsuite.AnyFunSuite + + class CubeCalculatorTest extends AnyFunSuite { + test("CubeCalculator.cube") { + assert(CubeCalculator.cube(3) === 27) + } + } + ``` +1. У початковому коді клацніть правою кнопкою миші на `CubeCalculatorTest` та оберіть **Run 'CubeCalculatorTest'**. + +## Розуміння коду + +Переглянемо кожний рядок окремо. + +* `class CubeCalculatorTest` означає, що ми тестуємо об'єкт `CubeCalculator` +* `extends AnyFunSuite` використовуємо функціональність класу AnyFunSuite з ScalaTest, насамперед функцію `test` +* `test` функція з AnyFunSuite, що збирає результати тверджень (assertions) у тілі функції. +* `"CubeCalculator.cube"` назва тесту. Ви можете обрати будь-яку назву, але існує домовленість називати "ClassName.methodName". +* `assert` приймає булеву умову і визначає, пройшов тест чи не пройшов. +* `CubeCalculator.cube(3) === 27` перевіряє чи дорівнює результат функції `cube` значенню 27. + Оператор `===` є частиною ScalaTest та надає чисті повідомлення про помилки. + +## Додати інший тест-кейс +1. Додайте інший тестовий блок з власним `assert`, що перевіряє значення куба `0`. +1. Виконайте `sbt test` знову, двічі клацнувши правою кнопкою миші на `CubeCalculatorTest` та обравши 'Run **CubeCalculatorTest**'. + +## Висновок +Ви побачили один шлях тестування вашого Scala коду. Більше про +FunSuite ScalaTest на [офіційному вебсайті](https://www.scalatest.org/getting_started_with_fun_suite). +Ви можете проглянути інші фреймворки для тестування такі як [ScalaCheck](https://www.scalacheck.org/) та [Specs2](https://etorreborre.github.io/specs2/). diff --git a/_uk/getting-started/sbt-track/getting-started-with-scala-and-sbt-on-the-command-line.md b/_uk/getting-started/sbt-track/getting-started-with-scala-and-sbt-on-the-command-line.md new file mode 100644 index 0000000000..58adf6baf9 --- /dev/null +++ b/_uk/getting-started/sbt-track/getting-started-with-scala-and-sbt-on-the-command-line.md @@ -0,0 +1,84 @@ +--- +title: Початок роботи зі Scala і sbt у командному рядку +layout: singlepage-overview +partof: getting-started-with-scala-and-sbt-on-the-command-line +language: uk +disqus: true +next-page: /uk/testing-scala-with-sbt-on-the-command-line +--- + +У цьому посібнику ви дізнаєтесь, як створити проєкт Scala шаблон. +Ви можете використовувати це як відправну точку для власного проєкту. +Ми використаємо [sbt](https://www.scala-sbt.org/1.x/docs/index.html), що де-факто є основним інструментом збірки для Scala. +sbt компілює, запускає, та тестує ваші проєкти поміж інших корисних задач. +Ми припускаємо, що ви знаєте, як користуватися терміналом. + +## Встановлення +1. Впевніться, що ви вже встановили Java 8 JDK (також відому як 1.8) + * Запустіть `javac -version` у командному рядку і впевніться, що бачите + `javac 1.8.___` + * Якщо у вас не встановлена версія 1.8 або вище, [встановіть JDK](https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) +1. Встановіть sbt + * [Mac](https://www.scala-sbt.org/1.x/docs/Installing-sbt-on-Mac.html) + * [Windows](https://www.scala-sbt.org/1.x/docs/Installing-sbt-on-Windows.html) + * [Linux](https://www.scala-sbt.org/1.x/docs/Installing-sbt-on-Linux.html) + +## Створити проєкт +1. Перейдіть (`cd`) у пусту директорію. +1. Виконайте наступну команду `sbt new scala/hello-world.g8`. +Це завантажує шаблон 'hello-world' з GitHub. +Також буде створена директорія `target`, яку можна ігнорувати. +1. Коли буде запропоновано, назвіть застосунок `hello-world`. Це створить проєкт з назвою "hello-world". +1. А тепер подивимось що було згенеровано: + +``` +- hello-world + - project (sbt uses this to install and manage plugins and dependencies) + - build.properties + - src + - main + - scala (All of your scala code goes here) + - Main.scala (Entry point of program) <-- this is all we need for now + - build.sbt (sbt's build definition file) +``` + +Після збірки вашого проєкту, sbt створить більше `target` директорій для згенерованих файлів. + +## Запуск проєкту +1. Перейдіть (`cd`) у `hello-world`. +1. Виконайте `sbt`. Це запустить sbt консоль. +1. Наберіть `~run`. Символ `~` є опціональним та означає перебудову при кожному збереженні файлу, + що дає можливість пришвидшити цикл редагування/запуск/відлагодження. + +## Модифікація коду +1. Відкрийте файл `src/main/scala/Main.scala` у вашому текстовому редакторі. +1. Змініть "Hello, World!" на "Hello, New York!" +1. Якщо ви не зупинили роботу sbt, ви побачите як на консолі з'явиться "Hello, New York!". +1. Ви можете продовжити робити зміни та бачити результати на консолі. + +## Додання залежностей +Давайте ненадовго змістимо фокус на використання опублікованих бібліотек для забезпечення додаткової функціональності ваших програм. + +1. Відкрийте `build.sbt` та додайте наступний рядок: + +``` +libraryDependencies += "org.scala-lang.modules" %% "scala-parser-combinators" % "1.1.2" +``` + +Тут `libraryDependencies` є набором залежностей та використовуючи `+=`, +ми додаємо залежність [scala-parser-combinators](https://github.com/scala/scala-parser-combinators) до набору залежностей, +які необхідні для sbt та які завантажаться при його запуску. Тепер в будь-якому Scala файлі ви можете використати +класи, об'єкти тощо з scala-parser-combinators через звичайний "import". + +Більше опублікованих бібліотек можна знайти на +[Scaladex](https://index.scala-lang.org/) - індекс бібліотек Scala, місце куди ви можете зайти, щоб скопіювати інформацію про бібліотеку +та додати у ваш `build.sbt` файл. + +## Наступні кроки + +Перейдіть до наступного посібника з серії _початок роботи з sbt_, та дізнайтесь про [тестування Scala з sbt та ScalaTest в командному рядку](testing-scala-with-sbt-on-the-command-line.html). + +**або** + +- Продовжить вивчати Scala інтерактивно нам [Вправи зі Scala](https://www.scala-exercises.org/scala_tutorial). +- Дізнайтеся про можливості Scala у коротких статтях, переглянувши наш [Тур по Scala]({{ site.baseurl }}/tour/tour-of-scala.html). diff --git a/_uk/getting-started/sbt-track/testing-scala-with-sbt-on-the-command-line.md b/_uk/getting-started/sbt-track/testing-scala-with-sbt-on-the-command-line.md new file mode 100644 index 0000000000..fc0a6e62ac --- /dev/null +++ b/_uk/getting-started/sbt-track/testing-scala-with-sbt-on-the-command-line.md @@ -0,0 +1,104 @@ +--- +title: Тестування Scala з sbt та ScalaTest в командному рядку +layout: singlepage-overview +partof: testing-scala-with-sbt-on-the-command-line +language: uk +disqus: true +previous-page: /uk/getting-started-with-scala-and-sbt-on-the-command-line +--- + +Існує кілька бібліотек і методологій тестування для Scala, +але в цьому посібнику ми продемонструємо один популярний варіант для фреймворку ScalaTest, +що називається [AnyFunSuite](https://www.scalatest.org/scaladoc/3.2.2/org/scalatest/funsuite/AnyFunSuite.html). + +Ми припускаємо, що ви знаєте [як створити проєкт Scala за допомогою sbt](getting-started-with-scala-and-sbt-on-the-command-line.html). + +## Налаштування +1. Створіть десь новий каталог через командний рядок. +1. Перейдіть (`cd`) в директорію та запустіть `sbt new scala/scalatest-example.g8` +1. Назвіть проєкт `ScalaTestTutorial`. +1. Проєкт вже має ScalaTest як залежність у файлі `build.sbt`. +1. Перейдіть (`cd`) в директорію та запустіть `sbt test`. Це запустить тестове середовище `CubeCalculatorTest` з єдиним тестом `CubeCalculator.cube`. + +``` +sbt test +[info] Loading global plugins from /Users/username/.sbt/0.13/plugins +[info] Loading project definition from /Users/username/workspace/sandbox/my-something-project/project +[info] Set current project to scalatest-example (in build file:/Users/username/workspace/sandbox/my-something-project/) +[info] CubeCalculatorTest: +[info] - CubeCalculator.cube +[info] Run completed in 267 milliseconds. +[info] Total number of tests run: 1 +[info] Suites: completed 1, aborted 0 +[info] Tests: succeeded 1, failed 0, canceled 0, ignored 0, pending 0 +[info] All tests passed. +[success] Total time: 1 s, completed Feb 2, 2017 7:37:31 PM +``` + +## Розуміння тестів +1. Відкрийте два файли в текстовому редакторі: + * `src/main/scala/CubeCalculator.scala` + * `src/test/scala/CubeCalculatorTest.scala` +1. У файлі `CubeCalculator.scala`, визначте функцію `cube`. +1. У файлі `CubeCalculatorTest.scala`, ви побачите, що клас, що названий так само як і об'єкт, що ми тестуємо. + +``` + import org.scalatest.funsuite.AnyFunSuite + + class CubeCalculatorTest extends AnyFunSuite { + test("CubeCalculator.cube") { + assert(CubeCalculator.cube(3) === 27) + } + } +``` + +Переглянемо кожний рядок окремо. + +* `class CubeCalculatorTest` означає, що ми тестуємо об'єкт `CubeCalculator` +* `extends AnyFunSuite` використовуємо функціональність класу AnyFunSuite з ScalaTest, насамперед функцію `test` +* `test` функція з AnyFunSuite, що збирає результати тверджень (assertions) у тілі функції. +* `"CubeCalculator.cube"` назва тесту. Ви можете обрати будь-яку назву, але існує домовленість називати "ClassName.methodName". +* `assert` приймає булеву умову і визначає, пройшов тест чи не пройшов. +* `CubeCalculator.cube(3) === 27` перевіряє чи дорівнює результат функції `cube` значенню 27. + Оператор `===` є частиною ScalaTest та надає чисті повідомлення про помилки. + +## Додати інший тест-кейс +1. Додайте інший тестовий блок з власним `assert`, що перевіряє значення куба '0'. + + ``` + import org.scalatest.funsuite.AnyFunSuite + + class CubeCalculatorTest extends AnyFunSuite { + test("CubeCalculator.cube 3 should be 27") { + assert(CubeCalculator.cube(3) === 27) + } + + test("CubeCalculator.cube 0 should be 0") { + assert(CubeCalculator.cube(0) === 0) + } + } + ``` + +1. Виконайте `sbt test` знову, щоб побачити результати. + + ``` + sbt test + [info] Loading project definition from C:\projects\scalaPlayground\scalatestpractice\project + [info] Loading settings for project root from build.sbt ... + [info] Set current project to scalatest-example (in build file:/C:/projects/scalaPlayground/scalatestpractice/) + [info] Compiling 1 Scala source to C:\projects\scalaPlayground\scalatestpractice\target\scala-2.13\test-classes ... + [info] CubeCalculatorTest: + [info] - CubeCalculator.cube 3 should be 27 + [info] - CubeCalculator.cube 0 should be 0 + [info] Run completed in 257 milliseconds. + [info] Total number of tests run: 2 + [info] Suites: completed 1, aborted 0 + [info] Tests: succeeded 2, failed 0, canceled 0, ignored 0, pending 0 + [info] All tests passed. + [success] Total time: 3 s, completed Dec 4, 2019 10:34:04 PM + ``` + +## Висновок +Ви побачили один шлях тестування вашого Scala коду. Більше про +FunSuite ScalaTest на [офіційному вебсайті](https://www.scalatest.org/getting_started_with_fun_suite). +Ви можете проглянути інші фреймворки для тестування такі як [ScalaCheck](https://www.scalacheck.org/) та [Specs2](https://etorreborre.github.io/specs2/). diff --git a/_uk/index.md b/_uk/index.md index 211050d3f1..32d183c077 100644 --- a/_uk/index.md +++ b/_uk/index.md @@ -20,7 +20,7 @@ scala3-sections: - title: "Початок роботи" description: "Встанови Scala 3 на свій комп'ютер і почни писати код Scala!" icon: "fa fa-rocket" - link: /scala3/getting-started.html + link: /uk/scala3/getting-started.html - title: "Книга по Scala 3" description: "Вивчи Scala, прочитавши серію коротких уроків." icon: "fa fa-book-open" @@ -66,7 +66,7 @@ scala2-sections: - title: "Початок роботи" description: "Встанови Scala на свій комп'ютер і почни писати код Scala!" icon: "fa fa-rocket" - link: /getting-started.html + link: /uk/getting-started/index.html - title: "Екскурсія по Скала" description: "Короткі введення в основні особливості мови." icon: "fa fa-flag" diff --git a/_uk/scala3/getting-started.md b/_uk/scala3/getting-started.md new file mode 100644 index 0000000000..4c2acc6bf7 --- /dev/null +++ b/_uk/scala3/getting-started.md @@ -0,0 +1,8 @@ +--- +layout: singlepage-overview +title: Перші кроки з Scala 3 +scala3: true +language: uk +--- + +{% include _uk/getting-started.md %} diff --git a/scala3/getting-started.md b/scala3/getting-started.md index b82ed44938..67e36bd2d7 100644 --- a/scala3/getting-started.md +++ b/scala3/getting-started.md @@ -1,7 +1,7 @@ --- layout: singlepage-overview title: Getting Started -languages: ["ja"] +languages: ["ja", "uk"] --- {% include getting-started.md %}