差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
programming:rust:crate:getopts [2019/04/07] – ikatakos | programming:rust:crate:getopts [2019/04/19] (現在) – [getopts - Rust] ikatakos | ||
---|---|---|---|
行 7: | 行 7: | ||
Pythonのargparseと同じような使用感。 | Pythonのargparseと同じような使用感。 | ||
- | Optionsオブジェクトにパースしたいキーワードをどんどん設定して、最後に '' | + | |
+ | 主にOptionsとMatchesの2つのオブジェクトが提供される。 | ||
+ | Optionsオブジェクトにパースしたいキーワードとその解析方法を次々設定して、最後に '' | ||
返値のオブジェクトであるMatchesから、必要な情報を取得する。 | 返値のオブジェクトであるMatchesから、必要な情報を取得する。 | ||
- | 機能的には過不足ないが、「2つの内いずれかは必須」などちょっと複雑なことは出来ない。 | + | 単純な機能は過不足ない。「2つの内いずれかは必須」など複雑なことは出来ない。 |
+ | |||
+ | =====解析できる構文===== | ||
+ | |||
+ | 位置引数、キーワード引数、フラグ引数に対応(この名称は勝手に付けた)。キーワード引数とフラグ引数は、まとめて「オプション引数」と呼ばれることが多いかも。オプション引数の名前(ハイフンに続く文字)は自由に、「ハイフン1つ+1文字」の省略形と「ハイフン2つ+任意の文字数」のロング名とを設定できる。 | ||
+ | |||
+ | > command AAA BBB -s CCC --longname DDD -e --flag | ||
+ | |||
+ | AAA BBB が位置引数 | ||
+ | -s CCC --longname DDD がキーワード引数(値を伴うオプション引数) | ||
+ | -e --flag がフラグ引数(値を伴わないオプション引数) | ||
+ | |||
+ | ===位置引数=== | ||
+ | |||
+ | * 何番目の引数かによって指定 | ||
+ | * キーワード引数とフラグ引数以外の引数を先頭から順に取得 | ||
+ | * 「最初の位置引数が現れたら、後はハイフン付いていようと全て位置引数」と解釈するオプションが存在 | ||
+ | |||
+ | ===キーワード引数=== | ||
+ | |||
+ | ハイフンから始まる所定のキーワードに続けて指定。 | ||
+ | |||
+ | ○: -o XXX or -oXXX or --opt XXX | ||
+ | ×: -o=XXX | ||
+ | |||
+ | 可変長引数は未対応だが、同じキーワードで複数回指定されたのを配列として受け取ることはできる。 | ||
+ | |||
+ | ×: -o XXX YYY ZZZ | ||
+ | ○: -o XXX -o YYY -o ZZZ | ||
+ | |||
+ | * 「'' | ||
+ | * 指定されなかった場合のデフォルト値を指定可能 | ||
+ | * '' | ||
+ | |||
+ | ===フラグ引数=== | ||
+ | |||
+ | '' | ||
+ | |||
+ | =====その他の機能===== | ||
- | * 位置引数、キーワード引数、フラグ引数に対応 | ||
- | * 位置引数 | ||
- | * 何番目の引数かによって指定 | ||
- | * 絶対的な位置ではなく、キーワード引数とフラグ引数以外の引数を順に取得 | ||
- | * 「最初の位置引数が現れたら、後はハイフン付いていようと全て位置引数」と解釈するオプションが存在 | ||
- | * キーワード引数 | ||
- | * ハイフンから始まる所定のキーワードに続けて指定 | ||
- | * ○: '' | ||
- | * ×: '' | ||
- | * 可変長引数は未対応だが、同じキーワードで複数回指定されたのを配列として受け取ることはできる | ||
- | * ×: '' | ||
- | * ○: '' | ||
- | * 「'' | ||
- | * 指定されなかった場合のデフォルト値を指定可能 | ||
- | * '' | ||
- | * フラグ引数 | ||
- | * '' | ||
* ヘルプ用文字列の自動生成可 | * ヘルプ用文字列の自動生成可 | ||
- | 複雑なことをしたい場合はdocoptsを使う。 | + | =====もっと複雑な構文が必要なら===== |
+ | |||
+ | docoptsを使う。 | ||
* [[http:// | * [[http:// |