Wolframscript 数字、文字変換(数字として認識されない)
Mathematica、特にwolframscriptを使う場合、コマンドライン引数を使う事があると思います。そんな時、引数の値を上手く処理できない時の対処法を掛け算の結果を表示するプログラムを使って紹介します。
コマンドライン引数を使う際、その読み込みには、$ScriptCommandLine[]を利用します。そのため、直感的には以下のコードのようになります。
a=$ScriptCommandLine[[2]];
Print[a*3];
このファイル(test.wls)を実行すると、
>>> wolframscript -file test.wls 2
3*2
このような出力となり、計算されず、文字列が表示されます。
数値として認識するには
引数を数値として認識するには、ToExpression[]を利用します。これを利用すると、先ほどのファイル(test.wls)は以下のように書き換えられます。
a=ToExpression[$ScriptCommandLine[[2]]];
Print[a*3];
こうすることにより、この実行結果は、
>>> wolframscript -file test.wls 2
6
となり、しっかりと2かける3が出来るようになりました。今回利用したToExpression[]は、文字列やボックスに対して解釈上の変換を行い、Wolfram言語の入力として使える式を生成する そうです。また、この効果は数値に限らず、文字列で表した式にも適用されるようで、応用範囲は広そうです。