コードが何をしているのか見てみましょう。このコマンドで...
racket cmd.rkt foo.html
... インタープリターに伝えています: 実行cmd.rkt
して、単一のパラメーター、 string を渡します"foo.html"
。
スクリプトでは、このコード...
(for/vector ([i (current-command-line-arguments)])
(display i))
...コマンド ライン引数 (例では 1 つ) を反復処理し、それぞれを順番に表示します。値として戻り、反復でdisplay
返されたすべての値を含むベクトルを作成することに注意してください。当然、これが出力になります。#<void>
for/vector
foo.html'#(#<void>)
最初の部分foo.html
は、渡された単一のコマンド ライン引数を表示した結果です。2 番目の部分は、前述のように、 を呼び出した結果で'#(#<void>)
ある 1 つの要素を持つベクトルです。#<void>
display
最後に、他の回答で述べたように、受信したすべてのコマンドライン引数を出力することだけを意図している場合は、使用を避けてくださいfor/vector
-新しいベクトルを作成したくない場合は、引数と単純なfor
意志のみをトラバースして出力します十分です。これは機能するはずであり、次の使用に関する @GregHendershott の推奨される最適化が含まれていますin-vector
。
(for ([i (in-vector (current-command-line-arguments))])
(display i))