MATLAB - оператор присваивания перегрузки - PullRequest
0 голосов
/ 22 ноября 2011

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

classdef myClass < handle
    properties
        A = [10 20 30 40]
    end
end 

Тогда предположим, что у меня есть следующие вызовы:

>> m = myClass;
>> n = m;

n будет дескриптором того же объекта, что и m это, конечно.Есть ли способ перегрузить оператор присваивания?В частности, мне интересно, могу ли я использовать что-то вроде следующего метода:

function val = assign(obj)
    val = obj.A;
end

Таким образом, выполнение n = m будет действовать так же, как n = m.A.

Ответы [ 2 ]

2 голосов
/ 22 ноября 2011

Не думаю, что вы можете: просто представьте, как бы вы присвоили сам объект переменной, это был бы точно такой же синтаксис. И поскольку у вас не может быть неоднозначности для исполняемой программы, маловероятно, чтобы это было возможно и полезно.

Если вы хотите использовать его как синтаксический сахар, научитесь жить с ограничениями. В противном случае вы можете по-другому взглянуть на свой дизайн.

1 голос
/ 22 ноября 2011

Невозможно перегрузить оператор =, чтобы сделать это.

Но (как вы, вероятно, поняли) нет причины, почему вы не можете реализовать свой метод assign, как вы это сделали, изатем позвоните n = assign(m).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...