Моя первая программа на Scala

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

Побаловавшись с примерами с курса от Twitter решил попробовать написать что-нибудь простое. Например, консольное приложение для поиска вопросов на StackOverflow.

В качестве IDE использовал IntelliJ Idea 14 Community Edition с плагином для Scala (все устанавливается очень просто).

Для сборки и запуска приложения использую SBT. Для этого потребуется создать конфигурационный файл build.sbt с описанием зависимостей и прочего.

В моем случае он выглядит следующим образом:

name := "TwitterSearch"

version := "1.0"

scalaVersion := "2.11.7"

libraryDependencies += "org.scalaj" %% "scalaj-http" % "1.1.5"

libraryDependencies += "org.json4s" %% "json4s-jackson" % "3.2.11"

О параметрах name, version и scalaVersion, думаю, говорить ничего не надо.

Зависимости в SBT указываются в параметре libraryDependencies в формате указанном выше. Т.е. при сборке SBT подтянет из своих загашников библиотеки scalaj-http и json4s-jackson. scalaj-http используется для выполнения запросов по http, а json4s-jackson — для парсинга JSON.

Для корректной работы SBT необходимо корректно подготовить структуру директорий. Она должна иметь следующий вид:

[project]
-src
--main
---scala
---java // опционально
--test // опционально

Весь код приложения находится в одном *.scala файле:

import scalaj.http._
import org.json4s._
import org.json4s.jackson.JsonMethods._
import org.json4s.JsonAST.JValue

object StackOverflowSearch {
  def main (args: Array[String]) {
    if (args.length == 0){
      println("Usage: stackoverflow <query>");
      return;
    }

    val query = args(0)
    val url = "https://api.stackexchange.com/2.2/search?order=desc&sort=activity&site=stackoverflow&intitle=" +
      java.net.URLEncoder.encode(query, "UTF-8")

    val response: HttpResponse[String] = Http(url).asString

    val result: List[String] = parse(response.body) \ "items" \ "title" \ classOf[JString]

    result.map(println)
  }
}

Для запуска приложения можно воспользоваться IDEA или SBT из консоли выполнив, находясь в папке проекта, команду

sbt

и далее

run "scala play"

.

tmp

Реклама

Моя первая программа на Scala: 2 комментария

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.