[解決済み】コマンドラインパラメータを解析する最良の方法?[クローズド]
2022-04-04 22:15:02
質問
Scalaでコマンドラインパラメータをパースするのに最適な方法は何ですか? 個人的には、外部jarを必要としない軽量なものがいいと思っています。
関連する
どのように解決するのですか?
scopt/scopt
val parser = new scopt.OptionParser[Config]("scopt") {
head("scopt", "3.x")
opt[Int]('f', "foo") action { (x, c) =>
c.copy(foo = x) } text("foo is an integer property")
opt[File]('o', "out") required() valueName("<file>") action { (x, c) =>
c.copy(out = x) } text("out is a required file property")
opt[(String, Int)]("max") action { case ((k, v), c) =>
c.copy(libName = k, maxCount = v) } validate { x =>
if (x._2 > 0) success
else failure("Value <max> must be >0")
} keyValueName("<libname>", "<max>") text("maximum count for <libname>")
opt[Unit]("verbose") action { (_, c) =>
c.copy(verbose = true) } text("verbose is a flag")
note("some notes.\n")
help("help") text("prints this usage text")
arg[File]("<file>...") unbounded() optional() action { (x, c) =>
c.copy(files = c.files :+ x) } text("optional unbounded args")
cmd("update") action { (_, c) =>
c.copy(mode = "update") } text("update is a command.") children(
opt[Unit]("not-keepalive") abbr("nk") action { (_, c) =>
c.copy(keepalive = false) } text("disable keepalive"),
opt[Boolean]("xyz") action { (x, c) =>
c.copy(xyz = x) } text("xyz is a boolean property")
)
}
// parser.parse returns Option[C]
parser.parse(args, Config()) map { config =>
// do stuff
} getOrElse {
// arguments are bad, usage message will have been displayed
}
上記により、以下のような使用文章が生成されます。
scopt 3.x
Usage: scopt [update] [options] [<file>...]
-f <value> | --foo <value>
foo is an integer property
-o <file> | --out <file>
out is a required file property
--max:<libname>=<max>
maximum count for <libname>
--verbose
verbose is a flag
some notes.
--help
prints this usage text
<file>...
optional unbounded args
Command: update
update is a command.
-nk | --not-keepalive
disable keepalive
--xyz <value>
xyz is a boolean property
現在、私が使っているのはこれです。あまり荷物にならない、きれいな使い方です。 (免責事項: 私は現在このプロジェクトのメンテナンスを行っています)
関連
-
[解決済み] argparseによるブーリアン値のパース
-
[解決済み] Node.jsのプログラムにコマンドライン引数を渡すにはどうしたらいいですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] Bashでコマンドライン引数を解析するには?
-
[解決済み] コマンドライン引数の読み方・処理方法は?
-
[解決済み] Javaでコマンドライン引数をパースするには?
-
[解決済み] PowerShellでコマンドライン引数を処理する方法
-
[解決済み】rakeタスクにコマンドライン引数を渡す方法
-
[解決済み】Scalaの記号演算子にはどんな意味があるの?
-
[解決済み] データセットにカスタムオブジェクトを格納する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Scalaで「:+」は何を意味するのか
-
[解決済み] ScalaのDSLって何?[クローズド]
-
[解決済み] scala.Float to java.Float k/v変換でScala MapをJava Mapに変換するにはどうしたらいいですか?
-
[解決済み] sparkでrddオブジェクトをdataframeに変換する方法
-
[解決済み] C#でコマンドライン引数を解析する最良の方法とは?[クローズド]
-
[解決済み] Javaでコマンドライン引数をパースするには?
-
[解決済み] self-typesとtrait subclassの違いは何ですか?
-
[解決済み】Scalaのvarとvalの定義の違いは何ですか?
-
[解決済み】ScalaのCaseオブジェクトとEnumerationsの比較
-
[解決済み】Scalaでケースクラスのインスタンスをクローンして、1つのフィールドだけを変更するにはどうすればよいですか?