Scalaを使い始めて、半年以上が過ぎてきました。 セプテーニ・オリジナル2年目の越です。 僕がScalaの学習をする時にREPLでいろいろ試すことが多いので、よく使っているものをまとめてみました。
ライブラリをREPL上で動かして試したいときなどに使っている機能をまとめてみました
Scalaのライブラリをちょっと試したい時などにREPLを使って試すときに僕がよく使っている機能です。
build.sbt
lazy val root = (project in file(".")). settings( name := "practice", version := "1.0", scalaVersion := "2.11.4" ) libraryDependencies ++= Seq( "joda-time" % "joda-time" % "2.9", "org.joda" % "joda-convert" % "1.8" )
>sbt console
[:paste]を使って以下のスクリプトを入力してみる
*コンパニオンオブジェクトをREPL上で定義するときなどに使用しています(REPLではパッケージの入れ子構造のように定義されていくため)
> :paste
import org.joda.time.DateTime import org.joda.time.format.DateTimeFormat case class DT(dateTime: DateTime) { override def toString = dateTime.toString(DateTimeFormat.fullDate()) lazy val year = dateTime.getYear() lazy val month = dateTime.getMonthOfYear() lazy val day = dateTime.getDayOfMonth() lazy val hour = dateTime.getHourOfDay() lazy val minute = dateTime.getMinuteOfHour() lazy val second = dateTime.getSecondOfMinute() } object DT { def now = DT(new DateTime()) }
出力結果
override def toStringをやっておくと、 applyしたときの初期出力を調整できたりします。
scala> DT.now res1: DT = 2015年11月7日
途中までのREPL内の情報を残しておきたい場合[:save]
保存先のディレクトリを作成しておく
> mkdir snipet
REPL上で:saveを実行する。 *このときにres1にDT.nowの値いが入っている状態
scala> :save snipet/joda_datetime.scala
保存したREPLの情報を再読み込みする方法
scala> :load snipet/joda_datetime.scala Loading snipet/joda_datetime.scala... res1: DT = 2015年11月7日
保存しておくことで、あとで試したい時にも再定義が簡単に行えて便利です。