Предположим, у меня есть следующий код, который имеет два вложенных цикла while.
struct Parameters
maxIter1::Float64
maxIter2::Float64
tolerance1::Float64
tolerance2::Float64
end
mutable struct Guess
x1::Float64
x2::Float64
end
function solveModel(par::Parameters,initGuess::Guess)
iterate1 = 0
error1 = 0
guess = initGuess
while (par.iterate1 < par.maxIter1 && error1 > par.tolerance1)
iterate1 += 1
iterate2 = 0
error2 = 0
guess.x2 = initGuess.x2
while (iterate2 < par.maxIter2 && error2 > par.tolerance2)
iterate2 += 1
z2 = solveInnerProblem(par,guess)
newGuess = update2(par,guess,z2)
error2 = computeError2(newGuess,guess)
guess = newGuess
end
guess = newGuess
end
end
Я получаю сообщение об ошибке,
![enter image description here](https://i.stack.imgur.com/I67Sy.png)
Примечание: ссылка на номер строки ошибочна - строка 294 моего кода не содержит никаких упоминаний о newGuess.
Сообщение об ошибке исчезнет, если я закомментирую строку
guess = newGuess
Во внешнем цикле (последняя строка перед последними двумя end
строками во фрагменте кода). Я совершенно не понимаю, почему это происходит. Переменная newGuess
четко определена, но Юлия говорит, что она не определена ...