In Julia habe ich eine Funktion für eine komplizierte Simulation, monte_carlo_sim()
, die viele Parameter enthält. Innerhalb dieser Funktion muss ich viele andere Funktionen aufrufen. Ich könnte stand-alone-Funktionen außerhalb von monte_carlo_sim()
schreiben, aber dann würde ich viele Parameter übergeben müssen - von denen viele innerhalb dieser Funktion konstant sind -, die Eleganz und Klarheit opfern würden (und vielleicht die Tatsache nicht ausnutzen) dass dies konstante Variablen sind?). Gibt es einen Leistungsgrund, Funktionen nicht in Funktionen einzuschließen? Als ein Spielzeugbeispiel hier ist die Temperatur T
konstant, und wenn ich diese Variable nicht an meine Funktion compute_Boltzmann()
übergeben möchte, könnte ich Folgendes tun. Ist da etwas nicht in Ordnung?Funktionen innerhalb einer Funktion in Julia
function monte_carlo_sim(temp::Float64, N::Int)
const T = temp
function compute_Boltzmann(energy::Float64)
return exp(-energy/T)
end
# later call this function many times
for i = 1:1000
energy = compute_energy()
b = compute_Boltzmann(energy)
end
end
Alternativ könnte ich einen neuen const Typ SimulationParameters
und übergeben diese an compute_Boltzmann
statt, definieren und zu schreiben compute_Boltzmann
außerhalb der monte_carlo_sim
Funktion als here? Ist das besser? Ich würde jedoch mehr Informationen weitergeben, als ich in diesem Fall brauchen würde.