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