Possible to create a function where the input is changed?
显示 更早的评论
I understand it is one of the "cardinal rules" of MATLAB that functions do not affect the input values (versus scripts that do); however, is it possible to create a function where this is violated?
For example:
>>x = 10
>>Function(x)
%Running this would change the value of x in the workspace to some other value
采纳的回答
更多回答(2 个)
Matt Tearle
2012-2-10
I am not doing this...
classdef passbyref < handle
properties
value
end
methods
function x = passbyref(y)
x.value = y;
end
function notagreatidea(x)
x.value = x.value + 1;
end
end
end
And then
>> x = passbyref(42)
>> notagreatidea(x)
>> x
May Cleve have mercy on my soul.
Also: what Sean and Walter said.
7 个评论
Josh
2012-2-10
Sean de Wolski
2012-2-10
Nope there are two functions and a class definition in there.
Walter Roberson
2012-2-10
A class definition is not considered a function.
classdef need to go in to .m files with the same name as the class being defined, and "classdef" must be the first non-blank non-comment line, and nothing except whitespace and comments can go after the "end" of the classdef.
Josh
2012-2-10
Sean de Wolski
2012-2-10
no, you need just one file. You could ghave multiple files (for the methods) but then you'd need a special folder - not worth it for two one-line methods.
http://www.mathworks.com/help/techdoc/matlab_oop/ug_intropage.html
Matt Tearle
2012-2-10
I'll let you argue the semantics with your bet opponent, but notagreatidea is kindasorta a function -- it's actually a method of the passbyref class. So it only works on passbyref objects. However, once you have a passbyref object (x = passbyref(42)), it is a single "function call" that invokes the notagreatidea method and changes its value property.
For the sake of your bet, follow Sean's first link... [hint]
Josh
2012-2-13
Walter Roberson
2012-2-10
0 个投票
Yes, it is possible. There are not many cases where it is a good idea, however.
类别
在 帮助中心 和 File Exchange 中查找有关 Tables 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!