新人SEの学習記録

14年度入社SEの学習記録用に始めたブログです。気づけば社会人3年目に突入。

学習記録:ドワンゴ 新人向けScala研修テキスト

あまりにサボっていたのでリハビリがてら。

参考文献

dwango.github.io

4. sbtでプログラムをコンパイル・実行する

以下のディレクトリ構成でプログラムを作成する。

sandbox
├─ HelloWorld.scala
└─ build.sbt

HelloWorld.scalaは以下のとおり。

object HelloWorld {
  def main(args: Array[String]): Unit = {
    println("Hello, World!")
  }
}

build.sbtでは,scalaのバージョンの指定と,scalacの警告オプションを有効にする。

// build.sbt
scalaVersion := "2.11.8"

// deprecation: 今後廃止予定のAPIの利用
// feature: 実験的な機能や注意が必要な機能の利用
// unchecked: パターンマッチが有効に機能しない場合
// Xlint: その他,望ましい書き方や落とし穴についての情報
scalacOptions ++= Seq("-deprecation", "-feature", "-unchecked", "-Xlint")

上記のファイルを配置したら,sandboxディレクトリに入ってsbtを起動し,runコマンドを入力する。

% sbt
[info] Set current project to sandbox (in build file:/Users/uriku/prg/scala/sandbox/)
> run
[info] Compiling 1 Scala source to /Users/riku/prg/scala/dwango/sandbox/target/scala-2.11/classes...
[info] 'compiler-interface' not yet compiled for Scala 2.11.8. Compiling...
[info]   Compilation completed in 6.715 s
[info] Running HelloWorld 
Hello, World!
[success] Total time: 115 s, completed 2016/05/11 22:44:42

HelloWorldプログラムがコンパイル・実行され,Hello, World!が出力されている。
runコマンドはmainメソッドを持っているオブジェクトを探して実行する。

sbtの管理下にあるScalaプログラムはconsoleコマンドでREPLから呼び出すことができる。
HelloWorld.scalaと同じ場所にUser.scalaファイルを作成する。

class User(val name: String, val age: Int)

object User {
  def printUser(user: User) = println(user.name + " " + user.age)
}

この状態でREPLを起動すると,REPLでUserクラスやUserオブジェクトを使用することができる。

scala> val u = new User("uriku", 100)
u: User = User@24d92618

scala> User.printUser(u)
uriku 100