exponenta event banner

matlab.lang.correction.ConvertToFuncterNotationCorrection класс

Пакет: 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