Bug: class field modified by reference
17 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Antonio Mei
am 1 Jun. 2018
Kommentiert: Antonio Mei
am 1 Jun. 2018
There is a major bug in Matlab in which the field of a class is modified when passed as an function argument but not requested as an output if the calling function modifies the value internally. In the minimal example below: b.value is not the same before and after calling test.
b.value = 10;
b.value,
a = test(b);
b.value
function a = test(b)
a=1; b=b.value*10;
end
3 Kommentare
Akzeptierte Antwort
Steven Lord
am 1 Jun. 2018
I tried this with a very simple class and it worked as I expected.
It sounds to me like b is an instance of a handle class. If that's the case, the behavior you described is correct as described in the "Handle Objects Modified in Functions" section on that documentation page (assuming that in your test function you assigned into the value property of the b object rather than overwriting the variable inside the function.) See the attached example. I expect the last line printed when you run that code to be "ans = 100".
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Construct and Work with Object Arrays finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!