exponenta event banner

Проверка области действия переменной в редакторе

Проблемы определения объема могут быть источником некоторых проблем кодирования. Например, если вы не знаете, что вложенные функции совместно используют определенную переменную, результаты выполнения кода могут быть не такими, как вы ожидали. Аналогично, ошибки в использовании локальных, глобальных и постоянных переменных могут привести к неожиданным результатам.

Анализатор кода не всегда указывает на проблемы с областью действия, поскольку совместное использование переменной различными функциями не является ошибкой - возможно, это ваше намерение. Используйте функции MATLAB ® и функции выделения переменных, чтобы определить, когда и где код использует функции и переменные. При наличии активного подключения к Интернету можно посмотреть видеоролик «Выделение переменных и функций» для получения обзора основных функций.

Концептуальные сведения о вложенных функциях и различных типах переменных MATLAB см. в разделе Совместное использование переменных родительскими и вложенными функциями и совместное использование данных между рабочими пространствами.

Использовать автоматическую функцию и выделение переменных

По умолчанию редактор показывает функции, локальные переменные и переменные с общей областью в различных оттенках синего цвета. Переменные с общей областью действия включают глобальные переменные, постоянные переменные и переменные внутри вложенных функций. (Дополнительные сведения см. в разделе Вложенные функции.)

Чтобы включить и отключить подсветку или изменить цвета, щелкните Настройки (Preferences) и выберите MATLAB (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

Проверьте код, выполнив следующие действия:

  1. На вкладке Главная в разделе Среда щелкните Настройки и выберите MATLAB > Цвета > Инструменты программирования. Убедитесь, что выбраны опции Автоматически выделять (Automatically highlight) и Переменные (Variables) с общей областью действия.

  2. Копировать rowsum код в редакторе.

    Обратите внимание, что переменная отображается синим цветом, что указывает на i не является локальной переменной. Оба rowTotals функции и addToSum функции задать и использовать переменную i.

    Переменная n, в строке 6 отображается черным цветом, что указывает на то, что она не охватывает несколько функций.

  3. Наведите указатель мыши на экземпляр переменной i.

    Появляется подсказка: Область действия переменной «i» охватывает несколько функций.

  4. Щелкните ссылку всплывающей подсказки для получения информации о переменных, область действия которых охватывает несколько функций.

  5. Щелкните экземпляр i.

    Каждая ссылка на i В правой части окна «Редактор» на индикаторной панели отображаются синие цвета и маркеры.

  6. Наведите курсор на один из маркеров индикаторной полосы.

    Появится подсказка с именем функции или переменной и строкой кода, представленной маркером.

  7. Щелкните маркер, чтобы перейти к строке, указанной во всплывающей подсказке для этого маркера.

    Это особенно полезно, когда файл содержит больше кода, чем можно просмотреть в редакторе.

Исправьте код, изменив экземпляр i в строке 15 - y.

Подобные эффекты подсветки можно увидеть при щелчке ссылки на функцию. Например, нажмите кнопку addToSum.