ARGSキーワードを使用すると、コマンドラインからJuliaスクリプトを呼び出すときに引数を指定できます(Access command line arguments in Julia参照)。これにより、コマンド行呼び出しの各スペースは、ARGS配列内の別個の要素をマークします。これらの要素の1つを、それ自身が任意の長さの配列にしたい場合はどうすればよいですか? ARGSの別々の要素を連結するだけでは、ここでは不適切と思われます。Julia:passコマンドラインからスクリプトに任意の長さの配列
2
A
答えて
3
ここに2つのキーがあります。
- コマンドラインからスクリプトに渡すものはすべて、最初は文字列になります。スクリプト内で
eval(parse())
を使用して、渡す文字列を目的のオブジェクトのタイプに変換します。 - 最初の文字列を正しく定式化してください。これは、渡すArrayの内容に依存します。ここで
スクリプトの例です:
次の端末のコマンドでこれを実行するprintln(string("First Arg Passed to Script: ", ARGS[1]))
println(string("typeof(ARGS[1]) = ", typeof(ARGS[2])))
println(string("Second Arg Passed to Script: ", ARGS[2]))
println(string("typeof(ARGS[2]) = ", typeof(ARGS[2])))
MyArray = eval(parse(ARGS[1]))
println(string("typeof(MyArray) = ", typeof(MyArray)))
println(string("length(MyArray) = ", length(MyArray)))
println(string("MyArray = ", MyArray))
:
julia /Users/aireties/Desktop/ArrayTest.jl "[2, 4, 5]" 23
は出力が得られます。
First Arg Passed to Script: [2, 4, 5]
typeof(ARGS[1]) = UTF8String
Second Arg Passed to Script: 23
typeof(ARGS[2]) = UTF8String
typeof(MyArray) = Array{Int64,1}
length(MyArray) = 3
MyArray = [2,4,5]
注:しかし、 、私が望むならば
julia /Users/aireties/Desktop/ArrayTest.jl '["a", "b", 5]' 23
の呼び出し:私は、コマンドラインから渡す配列内の文字列は、私はジュリアが文字列を示すために使用し、ダブルクォーテーションでアレイを包む、引用の第二、単一のセットを使用する必要が含まれます:
julia /Users/aireties/Desktop/ArrayTest.jl "["a", "b", 5]" 23
エラーが発生します。
2
@airetiesが提供する答えは良いです。しかし、入力配列が大きい場合に特にうまく機能する別のオプションを提供すると思いました。入力された配列をテキストファイルに保存するだけです。 /someAbsolutePath/myArray.csv
を呼び出し、julia
を呼び出すときにテキストファイルの場所を引数として渡します。その後、スクリプトの最初の数行で、readcsv
と呼んでください。
これは、多くの入力を必要とするコマンドラインからルーチンを呼び出す場合、Julia(Python/R/Matlabなど)のような多くの言語ではかなり一般的な方法です。本番環境でコンパイルされたMatlabルーチンが、カスタムテキストファイルの場所をコマンドラインで単一の入力引数として受け取ることがわかりました。 Matlabルーチンの最初のセクションでは、カスタムテキストファイルからの入力引数のホスト全体を読み込みます(テキストファイルが期待通りに表示されない場合はエラーをスローします)。場合によっては、テキストファイルには、他の関連する入力を含む多くの他のテキストファイルの場所が含まれます。
関連する問題
- 1. 配列の配列から任意の長さの配列を読み取る
- 2. Python sum長さが任意の配列
- 3. 任意の長さの配列をSQLiteクエリにバインドする
- 4. Matplotlib配列を任意の長さに補間する
- 5. 任意の配列長のSIMD配列の追加
- 6. 任意の長さのバイナリ配列への
- 7. udp()オブジェクトから任意の長さのバイナリデータを整列する
- 8. 任意の長さの配列を減らすためのワープ・シャッフル
- 9. Typescript配列と任意の[]
- 10. 任意の配列要素
- 11. Postgresqlに任意の長さの文字列を格納
- 12. Adaの任意の長さ整数
- 13. ハスケル、リスト上のパターンマッチング任意の長さ
- 14. Kotlinの任意の配列にキャスト
- 15. MySQLのフィルタJSON_CONTAINS配列からの任意の値
- 16. 任意の長さの部分文字列を置換する
- 17. linuxコマンドラインの任意のpdf注釈ツール?
- 18. 任意のギャップペナルティを伴う配列アライメント
- 19. 任意の配列を使用する
- 20. 任意の配列を扱うF#
- 21. Cの長さ0の配列の意義は何ですか?
- 22. この関数を任意の長さの文字列にする
- 23. 任意の型の配列は、常に集約ですか?
- 24. 任意のネストされた任意の配列をJavaで定義できますか?
- 25. サービスごとに任意の長さのリクエストを許可する
- 26. XCode 4.3のコマンドラインからビルドするときに任意のライブラリをリンクする
- 27. コマンドライン - 任意の文字列を識別子に変換しますか?
- 28. テキストファイルを配列に...任意のアイデアですか?
- 29. Cython - 任意の長さの戻り型指定されたMemoryView
- 30. PostgreSQLの任意の行を任意の列に変換する
回答は良いですが、別の方法として、配列をテキストファイルに保存することもできます。 csvを既知の場所に配置し、その場所を引数として渡します。それから 'readcsv'をあなたのスクリプトの最初のステップの一つにするだけです。 –
本当に!良い提案。私の場合は、スクリプトの実行方法を定義する小さな配列があります。実際には、Juliaスクリプトを実行するためにさまざまな設定パターンでコマンドライン呼び出しを生成するPythonコードを記述しています。他の状況では、あなたの提案は、特に大規模な配列の場合には、最も有用である可能性があります。ありがとう! –
@ColinTBowersあなたが答えとしてあなたのコメントを追加したら、私はそれをupvoteすることを嬉しく思います。私は他の用途に役立つかもしれないと思うし、私は頻繁に私がSOを検索すると答えとして目に見えるものが見えないことを知っています。 –