How can I access the methods of a returned object?
5 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Alex Henderson
il 13 Nov 2014
Risposto: Philip Borghesani
il 25 Nov 2014
I'd like to achieve the following, but don't know if it's possible.
I have a function that returns an object of a class. The returned object has a method. I'd like to access the method inline.
For example, say I have a class called myclass, with a method called classmethod. I also have a standalone function, myfunc, that takes a numeric argument and returns an instance of myclass. If I say...
obj = myfunc(123);
obj.classmethod();
...then everything is fine, although the workspace now has an additional variable (obj). Is it possible to say the following?
myfunc(123).classmethod();
I keep getting this error "??? Undefined variable "myfunc" or class "myfunc"."
Thanks, Alex
0 Commenti
Risposta accettata
Titus Edelhofer
il 13 Nov 2014
Hi,
no, that's not possible. It's like with numeric arrays: you can't index into the result of a function directly. Suppose your myfunc returns a matrix.
myfunc(123)(1)
would not work either...
You could of course encapsulate this into some function that combines those two steps, but I doubt that makes sense.
By the way it looks weird to me that you create an object, want to call one method only and apparently have no use for the object afterwards? Nothing wrong with it per se, but seems not typical to me.
Titus
Più risposte (1)
Philip Borghesani
il 25 Nov 2014
Don't use dot to call the method:
classmethod(myfunc(123));
In MATLAB with standard objects there is no difference between obj.method(...) and method(obj,...) .
*By standard objects I mean one that does not have an overloaded subsref function.
0 Commenti
Vedere anche
Categorie
Scopri di più su Methods in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!