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