matlab.lang.correction.ConvertToFunctionNotationCorrection class

Пакет: matlab.lang.correction

Исправьте ошибку путем преобразования в обозначение функции

Описание

Использование ConvertToFunctionNotationCorrection объекты в классах, методы которых не должны вызываться с помощью записи через точку. Система координат MException объект, брошенный методом, может использовать ConvertToFunctionNotationCorrection образец, чтобы предложить преобразование записи через точку в синтаксис обозначения функции для вызова метода.

Создание

Описание

пример

cfnc = matlab.lang.correction.ConvertToFunctionNotationCorrection(method) создает коррекцию, которая предлагает преобразовать запись через точку в синтаксис функции обозначения для вызова method который бросил MException объект.

Входные параметры

расширить все

Имя метода неправильно вызвано с использованием записи через точку, заданное как строковый скаляр или вектор символов. method должен быть действительным MATLAB® идентификатор. Действительный идентификатор MATLAB является строковым скаляром или вектором символов алфавитно-цифровых чисел (A-Z, a-z, 0-9) и подчеркиваний, где первый символ является буквой, а длина текста меньше или равна namelengthmax.

Примеры

свернуть все

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

В текущей папке создайте класс myClass путем подклассирования handle суперкласс. В пределах methods блок, перегрузка subsref чтобы ограничить методы вызова для myClass объекты синтаксиса обозначения функций. Чтобы добавить предлагаемый синтаксис сообщения об ошибке, когда метод вызывается с использованием записи через точку, используйте ConvertToFunctionNotationCorrection образец в subsref способ.

classdef myClass < handle
    properties
        myProperty
    end
    methods (Hidden)
        function ref = subsref(obj, idx)
            firstSubs = idx(1).subs;
            if idx(1).type ~= "." || any(string(firstSubs) == properties(obj))
                % Parentheses indexing, brace indexing, or property indexing
                try
                    ref = builtin('subsref', obj, idx);
                    return
                catch me
                end
            elseif any(string(firstSubs) == methods(obj))
                % Valid method called using dot notation
                me = MException('myClass:useFunctionForm', ...
                    'Use function syntax to call the ''%s'' method.', ...
                    firstSubs);
                cfnc = matlab.lang.correction.ConvertToFunctionNotationCorrection(firstSubs);
                me = me.addCorrection(cfnc);
            else
                % Invalid method, property, or field called using dot notation
                me = MException('MATLAB:noSuchMethodOrField', ...
                    'Unrecognized method, property, or field ''%s'' for class ''%s''.', ...
                    firstSubs, class(obj));
            end
            throwAsCaller(me)
        end
    end
end

Создайте образец myClass и вызовите isvalid метод с использованием записи через точку. isvalid является одним из методов, который myClass наследует от его суперкласса.

myObject = myClass;
myObject.isvalid
Use function syntax to call the 'isvalid' method.

Did you mean:
>> isvalid(myObject)

См. также

Функции

Свойства

Введенный в R2019b