Ammonite-REPLを使う
Ammonite projectなるものがあるらしい。 その中の、Ammonite-REPLはリッチなREPLが使える代物らしいので、試してみた。
Install
sudo curl -L -o /usr/local/bin/amm https://git.io/vP4Gw && chmod +x /usr/local/bin/amm && amm
Hello World!
早速amm
を起動してみる。
> amm
Loading...
Welcome to the Ammonite Repl 0.7.8
(Scala 2.11.8 Java 1.8.0_20)
@ println("Hello World!")
Hello World!
ファイルに記述して実行してみる。
> echo println\(\"Hello World\!\"\) > Hello.sc
> amm Hello.sc
Hello World!
便利っぽいあれこれ
シェルスクリプトっぽく使う
さっきのHello.sc
の先頭に、1行追加する。
#!/usr/bin/env amm
println("Hello World!")
これでファイルを直接実行できる。
> ./Hello.sc
Compiling Hello.sc
Hello World!
ファイルをインポートする
val message = "Hello World"
import $file.Bar
println(Bar.message)
> amm Foo.sc
Compiling Foo.sc
Compiling Bar.sc
Hello World
これで、Foo
で、Bar
で定義されたフィールドやメソッドにアクセスできる。
sugoi!
ただし、デフォルトではローカルのスコープに展開してくれないので、Bar.message
みたいな感じになる。
Foo
でもmessage
でアクセスしたい場合は、↓のように明示する必要がある。
import $file.Bar
impor Bar.message
println(message)
import $file.Bar.message
のように1行ではいけないので注意。1行で書くなら、
import $file.Bar, Bar.message
ワイルドカードでインポート
いちいち明示するのが面倒なら、ワイルドカードが使える。
import $file.Bar, Bar._
println(message)
ライブラリをインポートする
import $ivy.`com.typesafe.play::play-json:2.4.6`, play.api.libs.json.Json
val json = Json.toJson(Map("hello" -> "world"))
println(json)
> amm ToJson.sc
Compiling ToJson.sc
{"hello":"world"}
play-jsonが使えた sugoi!!
Link
Latest post:
- OpenWhiskのScala sbtプロジェクトのgiter8テンプレートを作った
- OpenWhisk+Scalaで作るServerless Architectureとっかかり
- BluemixにPlayframeworkアプリケーションをデプロイする
- sbt、Giter8を統合するってよ
- Scala 2.12.0でSAM型