Показаны сообщения с ярлыком scala. Показать все сообщения
Показаны сообщения с ярлыком scala. Показать все сообщения

понедельник, 21 января 2013 г.

Scala Future. Примеры асинхронного программирования

Не так давно я начал изучения языка scala. Пока язык оставляет очень хорошие впечатления, а его полная совместимость с java позволяет разрабатывать софт аналогичной (с java) функциональности.
Сегодня я хочу показать как можно работать с асинхронными вычислениями в scala. Приведу лишь ознакомительную информацию, полную информацию можно посмотреть в документации.
Примеры будет использовать Future -  своего рода временное значение объекта, который вы можете создать для результата, которого еще не существует. Вообще future используется для выполнения параллельных задач в асинхронном неблокирующем стиле. Подключите future в свой проект

import scala.concurrent.future
Использовать данный механизм очень просто:

val f = future{
//ваша функция 

}

Поскольку вычисления происходят в асинхронном режиме, мы должны определить
Callback-функции для обработки результатов. На выбор у нас три функции: onComplete (вызывается при завершении вычислений), onSuccess (если вычисления были успешны), onFailure (если при вычислениях произошла ошибка).
Ну и приведу пример использования данных функций:

f onComplete {

case Right(posts) => for (post <- posts) render(post) //вызывается в случаи успеха

case Left(t) => render("An error has occured: " + t.getMessage) //вызывается при ошибке
}

f onFailure {

case t => render("An error has occured: " + t.getMessage)
}

f onSuccess {
case posts => for (post <- posts) render(post)
}

суббота, 19 января 2013 г.

Язык программирования Scala

В этой статье я не буду вдаваться в описания синтаксиса и сравнения языка Scala с другими. Я просто хочу посоветовать всем программистам java посмотреть этот интересный язык. На моем опыте несколько программистов java, которые начали знакомство со scala, изучили его и используют в своих проектах.
Причин в этом много, но главная особенность то, что вы можете использовать java библиотеки прямо в своих scala проектах без изменений и адаптации. Пока вы знаете язык плохо, можно писать в java стиле или выносить сложную логику в java модули и подключать к проекту. На самом деле основных преимуществ для вас будет два: количество строк кода уменьшится и вы познакомитесь с особенностями новый парадигмы программирования (функциональной), что очень полезно.
В целом я считаю, что любому java программисту стоит попробовать изучить scala, как минимум это расширит ваши знания, но возможно вы не захотите возвращаться к java.