Ich möchte mit Ausdrücken bilden, wieEine einfache Interpolation Ausdrücke in julia
julia> ex = :(a[$i,$j] + b[$i,$j])
, weil ich interessiert bin ein Programm in writting, dass sie die Struktur in der Lage, der Benutzer nur ein System von Gleichungen, in denen zu schreiben gibt von ihnen und dann schreibt Julia explizit das Stück Code beteiligt. Allgemeiner würde Ich mag Funktionen in einem Ausdruck einbetten, so etwas wie
julia> ex = :(a[$myfunc(i,j),$j] + b[$i,$j])
Nach der ersten Zeile des Codes Auswertung, erhalte ich
ERROR: UndefVarError: i not defined
in eval(::Module, ::Any) at ./boot.jl:226
Auf der anderen Seite, wenn ich
schreibenjulia> ex = :(a[i,j] + b[i,j])
:(a[i,j] + b[i,j])
julia> for i in 1:2
for j in 1:2
println(eval(ex))
end
end
ERROR: UndefVarError: i not defined
in eval(::Module, ::Any) at ./boot.jl:226
[inlined code] from ./boot.jl:225
in anonymous at ./<no file>:4294967295
in eval(::Module, ::Any) at ./boot.jl:226
Wie wird in diesem Fall interpoliert?
Das ist fast, was ich suche. Ich möchte z. von 'a [i] + b [j]' nach 'a [1] + b [4]', als ein Stück Code, um den Inhalt auf einen bestimmten Wert auszuwerten. Ja, es ist eher eine algebraische Manipulation als eine einfache Substitution. Der Grund ist, dass ich später möchte, dass das Programm beschließt, Dinge wie "a [1] + a [4] + b [3]" zu schreiben, die vom Benutzer bestimmt werden können. – user2820579
Anders ausgedrückt, ich möchte einen Ausdruck wie 'sum_i = 1, na [i] + b [i]' in Codeform konvertieren, dh 'a [1] + b [1]', wenn 'n = 1' oder "a [1] + b [1] + a [2] + b [2]" wenn "n = 2". – user2820579