почему свойства не принимают новое значение из метода класса?
4074 просмотра
2 ответа
Я пытаюсь понять немного больше о классах Matlab и их свойствах. Вот тестовый класс, который я создал:
classdef Test
properties
% Properties of the network type
some_var
end
methods
function N = Test()
end
function change_var( N, val )
N.some_var=val;
end
end
end
Теперь я создаю экземпляр этого класса и вызываю "change_var ()" ...
>> a=Test;
>> a.change_var(2);
>> a.some_var
ans =
[]
Почему свойство "some_var" не принимает значение "val" в присваивании?
Автор: gnychis Источник Размещён: 13.11.2019 11:31Ответы (2)
12 плюса
Test
Класс был определен как значение класса в отличие от класса ручки . Эффективно, когда вы звоните a.change_var
, a
передается по значению. Чтобы сохранить изменения в some_var
свойстве, сделайте это:
>> a = Тест; >> a = a.change_var (2);
Альтернативой является создание Test
класса дескриптора, и в этом случае пример в вашем вопросе будет работать так, как вы ожидаете. Чтобы сделать это, наследуйте от handle
класса, изменив первую строку определения вашего класса на это:
classdef TestАвтор: b3. Размещён: 10.11.2011 09:54
3 плюса
Метод предоставляет способ изменить свойство, но вы также должны вернуть объект. Вам нужно изменить ваш метод следующим образом:
function N = change_var( N, val )
N.some_var=val;
end
Обратите внимание, что функция возвращает измененный объект. Далее вам необходимо обновить a
с изменениями как:
a = a.change_var(2);
Автор: abcd
Размещён: 10.11.2011 09:56
Вопросы из категории :
- class В чем разница между структурой и классом в .NET?
- class Когда вы должны использовать класс против структуры в C ++?
- class В чем разница между старым и новым стилем классов в Python?
- class Как сделать глубокую копию объекта в Java?
- class Возможны ли статические переменные класса?
- class Каковы различия между структурой и классом в C ++?
- matlab Каковы эффективные способы объединения двух структур в MATLAB?
- matlab Можно ли выполнять параллельные обходы в MATLAB так же, как в Python?
- matlab Каков самый простой способ экспортировать данные Excel в Matlab?
- matlab Как работают свойства в объектно-ориентированном MATLAB?
- matlab Как нарисовать график поверхности без черных краев в MATLAB?
- matlab Как я могу сохранить измененное изображение в MATLAB?
- properties Как я могу оценить код C # динамически?
- properties Как мне перечислить свойства объекта JavaScript?
- properties Как эффективно подсчитать количество ключей / свойств объекта в JavaScript?
- properties В чем разница между полем и свойством?
- properties Переопределение полей или свойств в подклассах