В Julia у меня есть функция для сложного моделирования, monte_carlo_sim()
, которая включает в себя множество параметров. Внутри этой функции мне нужно вызвать многие другие функции. Я мог писать автономные функции за пределами из monte_carlo_sim()
, но тогда мне нужно было бы передать множество параметров, многие из которых были постоянными внутри этой функции, что принесло бы в жертву элегантность и ясность (и, возможно, не воспользовалось бы фактом что это постоянные переменные?). Есть ли причина в производительности, чтобы не включать функции в функции? В качестве примера игрушек температура T
является постоянной, и если я не хочу передавать эту переменную своей функции compute_Boltzmann()
, я мог бы сделать следующее. Что-то не так с этим?Функции внутри функции в 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
С другой стороны, я мог бы определить новый тип константный SimulationParameters
и передать это compute_Boltzmann
вместо этого, и писать compute_Boltzmann
вне функции monte_carlo_sim
в here? Это лучше? Тем не менее, я бы передал больше информации, чем мне нужно в этом случае.