3
私はジュリアを使い始めました。私は関数内の変数のセットを定義するためにeval(Juliaで)を使用しようとしています。のは、私が2に等しいV1を設定したいとしましょう:ジュリアでevalを使ってvarargsを扱う
関数を呼び出すfunction fun_test(varargs...)
v1 = 0;
if length(varargs) > 0
j = collect(linspace(1,length(varargs)-1,length(varargs)/2));
for i in j
expr_vargs = parse("$(varargs[i]) = $(varargs[i+1]);");
eval(expr_vargs);
end
end
println(v1)
end
として:
fun_test("v1", "2");
それはprintlnの戻り0(V1の初期値)以来、動作しません。しかし、私がJuliaの端末で類似の評価呼び出しを実行すると、それは機能します。
なぜ機能しないのか、どうやって解決するのかを教えてください。
あなたの 'expr_vargs'は問題ありません。それは 'eval'です... – Memming
こんにちは@Memming。あなたが意味するものを明確にしてください。 – merch
'eval'はグローバルスコープで動作しますが、' v1'は 'v1 = 0'という行のためにローカルです。 –