2012-04-25 10 views
1

何度も試しましたが、NDESK.Optionsの解析例を単純なvb.netコードに変換することはできません(私はプロではありません)。NDESK VBでのコマンドライン解析

それらが提供する唯一の例では、ここに提供されています: http://www.ndesk.org/doc/ndesk-options/NDesk.Options/OptionSet.html

しかし、私はこのコードの重要な部分を理解していません:

var p = new OptionSet() { 
     { "n|name=", "the {NAME} of someone to greet.", 
      v => names.Add (v) }, 
     { "r|repeat=", 
      "the number of {TIMES} to repeat the greeting.\n" + 
       "this must be an integer.", 
      (int v) => repeat = v }, 
     { "v", "increase debug message verbosity", 
      v => { if (v != null) ++verbosity; } }, 
     { "h|help", "show this message and exit", 
      v => show_help = v != null }, 
    }; 

この部分:V => names.Add(Vを)は、以下のvb.netに相当するものを取得します。 機能(v)names.Add(v)、

誰でもそんなに親切で、もっと分かりやすいコマンドで投稿できますか?

答えて

4

NDesk.Options OptionSetオブジェクトの上記のコードのVB.NETバージョンです。
このコード例では、コレクション初期化子を使用しています。

Static names = New List(Of String)() 
Dim repeat As Integer 
Dim verbosity As Integer 
Dim show_help As Boolean = False 

Dim p = New OptionSet() From { 
{"n|name=", "the {NAME} of someone to greet.", _ 
    Sub(v As String) names.Add(v)}, _ 
{"r|repeat=", _ 
    "the number of {TIMES} to repeat the greeting.\n" & _ 
    "this must be an integer.", _ 
    Sub(v As Integer) repeat = v}, _ 
{"v", "increase debug message verbosity", _ 
    Sub(v As Integer) verbosity = If(Not IsNothing(v), verbosity + 1, verbosity)}, _ 
{"h|help", "show this message and exit", _ 
    Sub(v) show_help = Not IsNothing(v)} 
} 

このコード例では、OptionSetコレクションを作成し、Addメソッドを呼び出す各オプションを追加します。また、最後のオプションは関数の関数ポインタ(AddressOf)を渡す例です。

Static names = New List(Of String)() 
Dim repeat As Integer 
Dim verbosity As Integer 
Dim show_help As Boolean = False 

Dim p = New OptionSet() 
p.Add("n|name=", "the {NAME} of someone to greet.", _ 
      Sub(v As String) names.Add(v)) 
p.Add("r|repeat=", _ 
      "the number of {TIMES} to repeat the greeting.\n" & _ 
      "this must be an integer.", _ 
      Sub(v As Integer) repeat = v) 
p.Add("v", "increase debug message verbosity", _ 
      Sub(v As Integer) verbosity = If(Not IsNothing(v), verbosity + 1, verbosity)) 
p.Add("h|help", "show this message and exit", _ 
      Sub(v) show_help = Not IsNothing(v)) 
' you can also pass your function address to Option object as an action. 
' like this: 
p.Add("f|callF", "Call a function.", New Action(Of String)(AddressOf YourFunctionName)) 
+0

ピート、この回答はあなたのために働いたのですか? – vic

+0

私はこれを使用し、それは99%働いた。私が欠けていた重要なことは 'p.Parse(args)'でした。何らかの理由で私はこのライブラリが自動的に動作し、argが渡されて自動的に解析されることを知っていました。 – guanome

+0

もう一つは、パラメータを定義するときに 'n | name ='でした。私は、 '='が値を持つ議論をするために必要なものであることを認識しませんでした。 – guanome

関連する問題