Questions tagged [scala]

Scala - язык программирования, спроектированный кратким и типобезопасным для простого и быстрого создания компонентного программного обеспечения. Scala это акроним от "Scalable Language" ("Расширяемый язык"). В основе расширяемости языка лежит аккуратная и тщательная интеграция концепций объектно-ориентированного и функционального программирования. Подход Scala это разработка небольшого набора основных конструкций, которые можно гибко сочетать.

Scala — мультипарадигмальный язык программирования, спроектированный кратким и типобезопасным для простого и быстрого создания компонентного программного обеспечения. Scala это акроним от "Scalable Language" ("Расширяемый язык"). В основе расширяемости языка лежит аккуратная и тщательная интеграция концепций объектно-ориентированного и функционального программирования. Подход Scala это разработка небольшого набора основных конструкций, которые можно гибко сочетать.

Объектно-ориентированная парадигма

Scala это чистокровный объектно-ориентированный язык. В принципе, любое значение является объектом, а любая операция это вызов метода. Язык поддерживает продвинутую архитектуру компонентов благодаря классам и примесям.

Функциональная парадигма

Scala это также полноценный функциональный язык. В Scala, в том числе, есть функции первого класса, библиотека с эффективными неизменяемыми структурами данных и вообще основное предпочтение отдается неизменности данных.

Полная совместимость с Java

Scala выполняется на JVM. Java классы могут быть свободно перемешаны со Scala классами в не зависимости от того разные это проекты или один и тот же, они также могут обоюдно ссылаться друг на друга. Java библиотеки, фреймворки и инструменты полностью доступны для использования.

Основные особенности:

  • Статическая типизация
  • Мощная система типов с механизмами вывода типа и указания вариации
  • Функциональные типы (включая анонимные) с поддержкой лексических замыканий
  • Сопоставление с образцом
  • Неявные параметры и преобразования, при помощи которых можно реализовать такие шаблоны как тайпкласс и прокачай-мою-библиотеку (enrich-my-library или pimp-my-library)
  • Компоновка примесей
  • Полная совместимость с Java
  • Мощные конструкции для реализации параллельных вычислений
  • Продвинутые языковые конструкции, такие как ограниченные продолжения и экспериментальная система создания макросов

Официальное ресурсы:

Бесплатные книги и руководства по языку программирования Scala:

Русскоязычные:

Англоязычные:

Поддерживаемый сообществом список Scala библиотек по категориям: awesome-scala

164 questions
11
votes
1 answer

Правило контравариантности в Scala

Скомпилируется ли следующий код? class GenericCellMut[-T](var x:T) Если да, то почему? Если нет, то почему, и как сделать так, чтобы скомпилировался? Он, естествено, не компилируется. Остается два вопроса - почему и что изменить, чтобы…
8
votes
1 answer

Зачем нужны Nothing, Null, Nil и None

Судя по именам все типы означают одно и тоже. В каких случаях в scala нужно применять: Nothing, Null, Nil и None, чем они отличаются?
6
votes
2 answers

Практика в Scala

Подскажите, есть ли ресурсы, где можно попрактиковаться в написании кода на Scala? Можно просто сборники задач по основному функционалу языка. Желательно, чтобы было освещено побольше проблем, связанных с функциональным программированием. Ссылки на…
test81278
  • 557
5
votes
2 answers

scala x = y = 1

Как сделать такое присвоение возможным. = возвращает Unit.
Anton
  • 51
4
votes
1 answer

Логика и назначение Product trait

Столкнулся с проблемой непонимания как работает trait Product. Пример: List(1,2).productIterator.toList Возвращает List[Any] = List(1, List(2)) Покопавшись в документации пока не смог найти ответа на вопрос почему 2-ой элемент возвращается как…
DedRain
  • 43
  • 2
3
votes
2 answers

Создать список из двух других по условию на Scala

Есть класс: case class Person (age: Int, name: String) Есть два списка: val classRoom1 = List(Person(14, "Jimm"),Person(14, "Jack"), Person(13, "Ricky")) val classRoom2 = List(Person(14, "Jimm"),Person(14, "Jack"), Person(13, "Ricky"),…
3
votes
1 answer

Scala параметры с двоеточием при вызове метода

final def apply(block: => Result): Action[AnyContent] = apply(BodyParsers.utils.ignore(AnyContentAsEmpty: AnyContent))(_ => block) Кто-нибуть знает что здесь означает AnyContentAsEmpty: AnyContent ? AnyContentAsEmpty я так понимаю это объект,…
3
votes
0 answers

Ошибка при компиляции java.lang.SecurityException: sealing violation

При запуске проекта на Scala компилятор дает ошибку Caused by: java.lang.SecurityException: sealing violation: can't seal package scala: already loaded на SO нашел такое решение: там предлагают поменять в джарнике sealed на false, но у меня и…
3
votes
1 answer

Обработка нескольких Either

Имеется 3 метода возвращающие Either, которые необходимо вызывать последовательно и если предыдущий вернул Right. Вернуть надо только результат последнего Either. Как правильно их обработать, чтобы не потерять Left, в случае возникновения ошибки и…
2
votes
0 answers

Что значит оператор _ в Scala?

Например: var connection: Connection = _
2
votes
1 answer

Рекурсивно обойти JSON с помощью circe-optics

Допустим есть JSON со сложной структурой: { "a":"aa", "b":"bb", "c":[ "aaa", "bbb" ], "d":{ "e":"ee", "f":"ff" } } И я хочу перевести в верхний регистр все строки. В доке нашел только…
Oleg
  • 1,408
2
votes
2 answers

Pattern matching в scala

Есть такой класс: case class Sex(name: String, number: Int) object Sex { val FEMALE = new Sex("FEMALE", 1) val MALE = new Sex("MALE", 2) def apply(number: Int): Sex = number match { case FEMALE.number => FEMALE case MALE.number =>…
Artem
  • 14,967
2
votes
3 answers

Как называется программная среда разработки для ЯП Scala?

Стал изучать язык программирования Scala Скачал с их сайта интерпретатор языка. Но вместе с тем возник вопрос,как называется программная среда в которой я могу писать мелкие приложения на Scala В книге Scala для нетерпеливых сказано только про сам…
beginner
  • 380
2
votes
1 answer

Передача параметра функции вида (Params: Int*) в другую функцию

Есть такой код: object Main { def main(args: Array[String]) = { println(test1(1, 5, 8)) } def test1(params: Int*): Int = { if (params.length > 1) test2(params) // -- ERROR else params(0) } def test2(params: Int*): Int = { …
Pit
  • 357
2
votes
1 answer

Scala, преобразовать Map[String, String] в Map[String, Any]

Есть необходимость преобразовать: Map( "a.b.c" -> "abc", "a.b.d" -> "abd" ) в: Map( "a" -> Map( "b" -> Map( "c"-> "abc", "d" -> "abd" ) ) ) Пока что я смог добиться только следующей структуры: List(Map("a" -> Map("b" ->…
Bleser
  • 1,758
1
2 3