Scala でコマンドライン引数を分解する

下記のように書くことでコマンドライン引数を分解できる。

val keyArgs = args.collect {
  case "--dry-run" => "dry-run"
}.toSet
val keyValueArgs = args.sliding(2).toList.collect {
  case Array("--date", specifiedDate: String) => "date" -> Some(specifiedDate)
}.toMap
--date "2018-05-15 00:00:00" --dry-run

のようなコマンドライン引数を渡した時に keyArgskeyValueArgs はそれぞれ下記のようになる。

// keyArgs
Set("dry-run")

// keyValueArgs
Map("date" -> Some("2018-05-15 00:00:00"))
Author
菅原 浩
Web プログラマー。好きな言葉は「安定的に不安定」。オーストラリアで英語を勉強した後に、現在デンマークで幸せについて考えている。
Next Post
設定ファイルを Scala で書く
Previous Post
チャットはコンテキストを適切に分けることが大事、分報とリアクションの組み合わせで心理的安全性の構築に役立てる
Recent Posts
Electron と Scala.js と scalajs-react と ScalaCSS を使ってアプリを作った時のログ
Scala で Flyway と Slick を使って codegen した時のログ
自分とは連続した情報であると定義する
本「リモートチームでうまくいく」の感想
映画「Whiplash」の感想