Моя первая программа на 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

2 thoughts on “Моя первая программа на Scala

  1. Pingback: Вебчик и Scala (via Play! Framework) | i can do some code for you

  2. Pingback: Как перестать страдать и начать пользоваться Postman | i can do some code for you

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s