Найти в Дзене
Scala Akka - или ООП по-другому.
Для того, чтобы подмести у поъезда мы не берём за руки дворника и метём, а просто говорим о том, где необходимо подмести. Так и в ООП модели не было ли логичнее не вызывать методы созданного класса, а просто посылать ему сообщение, на которое он будет реагировать?Представляю Вам Akka - акторную модель. Главная и нерушимая концепция Akka - всё есть актор. Но что есть актор, спросите Вы? Акторы - это отдельные сущности, наделённые определённой логикой, взаимодействующей с приходящими к ним сообщениями...
5 лет назад
Scala - немного о наследовании и полиморфизме в примерах.
Наследование позволяет нам абстрагировать общие параметры класса для того, чтобы чтобы избежать множественного повторения логики и облегчить классы. Помимо обычный классов в Scala существует абстрактный вид классов(abstract class), отличие от обычный классов в том, что мы не может создать экземпляр такого класса, они созданы лишь для последующего наследования другими классами: abstract class A {def a: String} class D extends A {override def a: String = ???} Как видите, после наследования абстрактного...
102 читали · 5 лет назад
Смена профессии к 30, или как влиться в IT без образования и опыта.
Чуть больше года назад у меня была работа токарем, из образования - только школа, и зародившееся желание смены профессии, а сейчас я зарабатываю тем, что пишу на Scala, и мне это нравится. Вот пара мыслей и советов тем, кто только решился на такой же шаг. Какой язык мне выбрать, и в какую отрасль пойти? На этот вопрос нет универсального ответа, сначала задайте себе вопрос, проанализируйте, что Вам нравится, и чего хотели бы Вы сами? Если интересна работа с визуальной составляющей, и нравится незамедлительно...
980 читали · 5 лет назад
Функции от а до я в Scala
Если Вы хотите стать чуть ближе к функциональному подходу написания кода, но словосочетание "функция высшего порядка" наводит на Вас ужас - то давайте попробуем разобраться, что к чему? И так, первое, что мы должны запомнить, так это то, что функция в Scala - это не метод, а значение(val а не def, проще говоря). Вы спросите - почему? Если Вы читали статью о обращении, то уже должны понимать, как будет происходить вызов функции в каждом из этих вариантов. Однако я бы сравнил функции не с "выполняющим какое-либо действие методом", а с "трубой, по которой течёт вода"...
5 лет назад
Implicits: неявные преобразования для гибкости вашего кода.
Ключевое слово implicit в scala - это повод для споров и обсуждений, это инструмент, позволяющий увеличить гибкость и читаемость кода в разы, да и просто безумно интересная фича, давайте же разберёмся что это такое, implicits? Существует несколько видов implicit'ов, начнём по порядку: Первый вид - неявные значения, то есть implicit val. Предположим, у нас есть метод: def implEx()(implicit a: String) = println(a) , то обозначив implicit val myString = "Hello implicit" в скоупе видимости, мы сможем...
5 лет назад
Pattern matching в Scala - приятное с полезным
Pattern matching - очень мощный инструмент, благодаря которому мы можем добиться высокой гибкости и краткости кода, но при его использовании стоит помнить пару ньюансов. Каких? Сейчас расскажу! Если сказать в двух словах, что такое pattern matching, - это switch-case на стероидах, способный работать с множеством различных типов и параметров, например: def patt(a: Any) = a match { case _:String => println("String") case n:Number => println(n) case _ => println("Smth else") } patt(2) patt("Valera") patt(new...
5 лет назад
Монады Scala в примерах
Окей, в прошлый раз я рассказывал о монадах в целом, но без пояснения, как их применять на практике, понять может быть тяжеловато. Давайте же взглянем на основные монады Scala! Тип первый - Option. Эта монада чертовски хороша, друг мой, ведь благодаря ей ты можешь перестать бояться NullPointerExeption! Она имеет два состояния - Some(x) и None, либо содержит значение, либо нет. При применении map() или for-comprehension, соответственно, операция будет производиться только с Some(x). Так же, при проверке...
5 лет назад
Val, var, def, обращение по имени и по значению - как не запутаться?
В Scala существует несколько способов обозначения значений и методов, так же как и обращения к ним, и сразу понять их может быть немного затруднительно, так давайте же разберёмся вместе? Начнём с самого простого - val и var, в чём различие между ними? Поможет понять "продолжение слова", VALue и VARiable - как не трудно после этого догадаться, первый - как значение - неизменный, а второй - изменяемый. По-хорошему старайтесь избегать использования var, ведь в функциональном подходе мутабельность(изменяемость) является отрицательным качеством, по многим причинам, но не об этом сегодня...
5 лет назад
For - comprehension в Scala
Если вы уже знакомы с каким-либо языком программирования, вы, скорее всего, знаете и операторы циклов, таки, как for, однако в Scala "for" имеет несколько иной смысл, нежели в других языках, давайте разберёмся в чём именно различие? For-comprehension - это синтаксический сахар языка, благодаря которому мы можем приводить сложные конструкции преобразования в приятный глазу облик, скажем так. Непонятно, согласен, посмотрим на примеры использования: возьмём два массива и переберём комбинации их содержимого...
399 читали · 5 лет назад
Основы функциональщины: хвостовая рекурсия
В программировании в функциональном стиле, в том числе и на Scala, стоит придерживаться основных правил, таких, например, как во избежание использования циклов юзайте рекурсию. Вы можете, конечно, использовать и while, и for(хотя в скале for - немножко не тот for, что вы знаете, но мы сейчас не об этом), но по ряду причин лучше придерживаться хорошего тона. Что такое рекурсия, спросите вы? Тут всё просто это "функция, которая вызывает сама себя", прям Уробо́рос, ни больше, ни меньше. Пожалуй главное,...
267 читали · 5 лет назад
Монады в Scala - просто о сложном
Изучая Scala Вам рано или поздно придётся столкнуться с довольно специфичной темой, без которой дальше продвигаться не представляется возможным. Монады - что это за блюдо, и с чем их едят? Как мне кажется, проще всего их можно описать одним словом - контейнер. Контейнер, несущий в себе значение переменной, массива, объекта, да всего чего угодно, но как обычно, всегда есть одно НО... Честно говоря, "но" не одно, а целых три - это основоположные законы монады, эдакий "контракт", который они обязуются выполнять, т...
876 читали · 5 лет назад
Scala - а оно мне надо?
Пожалуй, людей можно разделить на два типа: тех, кто не слышал о Scala совсем, и тех, кто, увидев Scala-разработчика воочию, не верит своим глазам, мол мифическое существо пробежало. Ну это у нас, в России, а за бугром, на сколько мне известно, ситуация совсем другая, и язык там куда более востребованный. Ну не будем об этом, мы же тут собрались понять, зачем выбирать Scala, а не его старшего братишку, всеми известную Java, например? Вот лично мне просто синтаксис понравился да краткость написанного кода...
5 лет назад