Определение объема проблем может быть источником некоторых проблем кодирования. Например, если вы не знаете, что вложенные функции совместно используют конкретную переменную, результаты выполнения вашего кода не могут состоять в том, как вы ожидаете. Точно так же ошибки в использовании локальных, глобальных, и персистентных переменных могут вызвать неожиданные результаты.
Анализатор кода не всегда указывает на проблемы определения объема, потому что совместное использование переменной через функции не является ошибкой — это может быть ваше намерение. Используйте функцию MATLAB® и переменные функции подсветки, чтобы идентифицировать, когда и где ваш код использует функции и переменные. Если у вас есть активное Интернет-соединение, можно посмотреть ролик Выделения Переменной и Функции для обзора основных функций.
Дополнительные сведения о вложенных функциях и различных типах переменных MATLAB см. в Совместном использовании Переменных Между Родительскими и Вложенными функциями и Осуществляйте обмен данными Между Рабочими областями.
По умолчанию Редактор указывает на функции, локальные переменные и переменные с разделяемым осциллографом в различных оттенках синего цвета. Переменные с разделяемым осциллографом включают: глобальные переменные, персистентные переменные и переменные во вложенных функциях. (Для получения дополнительной информации смотрите Вложенные функции.)
Чтобы включить и отключить выделение или изменить цвета, нажмите Preferences и выберите MATLAB> Colors> Programming tools. В MATLAB Online™ выделение включено по умолчанию, и изменение настроек для выделения не доступно.
По умолчанию, Редактор:
Подсветки все экземпляры заданной функции или локальной переменной лазурного цвета, когда вы устанавливаете курсор в имени функции или имени переменной. Например:
Отображает переменную с разделяемым осциллографом у синего чирка, независимо от позиции курсора. Например:
Рассмотрите код для функционального rowsum
:
function rowTotals = rowsum % Add the values in each row and % store them in a new array x = ones(2,10); [n, m] = size(x); rowTotals = zeros(1,n); for i = 1:n rowTotals(i) = addToSum; end function colsum = addToSum colsum = 0; thisrow = x(i,:); for i = 1:m colsum = colsum + thisrow(i); end end end
Когда вы запускаете этот код, вместо того, чтобы возвратить сумму значений в каждой строке и отображении:
ans = 10 10
Отображения MATLAB:
ans = 0 0 0 0 0 0 0 0 0 10
Исследуйте код путем выполнения этих шагов:
На вкладке Home в разделе Environment нажмите Preferences и выберите MATLAB> Colors> Programming tools. Гарантируйте, что Automatically highlight и Variables with shared scope выбраны.
Скопируйте код rowsum
в Редактор.
Заметьте, что переменная появляется у синего чирка, который указывает, что i
не является локальной переменной. И rowTotals
функционирует и набор функций addToSum
и использование переменная i
.
Переменная n
, в строке 6 появляется в черном цвете, указывая, что это не охватывает несколько функций.
Наведите указатель мыши на экземпляр переменной i
.
Подсказка появляется: осциллограф переменной 'i' охватываю несколько функций.
Щелкните по ссылке подсказки для получения информации о переменных чей промежуток осциллографа несколько функций.
Кликните по экземпляру i
.
Каждая ссылка на подсветки i
лазурного и маркеров появляется в панели индикатора на правой стороне Редактора.
Наведите на один из маркеров панели индикатора.
Подсказка появляется и отображает имя функции или переменную и строку кода, представленную маркером.
Кликните по маркеру, чтобы перейти к строке, обозначенной в подсказке для того маркера.
Это особенно полезно, когда ваш файл содержит больше кода, чем можно просмотреть когда-то в Редакторе.
Зафиксируйте код путем изменения экземпляра i
в строке 15 к y
.
Вы видите подобные эффекты подсветки, когда вы нажимаете на ссылку на функцию. Например, нажмите на addToSum
.