Since when has it been possible to dot-index the output of a class method?
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Catalytic
il 18 Mag 2022
Commentato: Bruno Luong
il 21 Lug 2022
Since when has it been possible to directly dot-index the output of a class method call, like this -
classdef myClass
properties
p
end
methods
function obj=myClass(val)
obj.p=val;
end
function obj=increment(obj)
obj.p=obj.p+1;
end
end
end
obj=myClass(2)
obj.increment.p
And why then, it is still not possible to do something similar with function calls -
subfunc.a
Error: File: test.m Line: 1 Column: 1
Using the dot operator to index into the output of function 'subfunc' is not
supported.
function S=subfunc()
S.a=1;
S.b=2;
end
1 Commento
Matt J
il 18 Mag 2022
Quite intriguing. It works with brace indexing, too:
classdef myClass
properties
p
end
methods
function obj=myClass(val)
obj.p=val;
end
function out=num2cell(obj)
out=num2cell(obj.p);
end
end
end
obj=myClass([30,10,70]);
obj.num2cell{1}
obj.num2cell{3}
Risposta accettata
Walter Roberson
il 19 Mag 2022
Since R2019b.
Indexing: Use dot indexing into function calls
You can now use dot indexing to index into the result of a function call. MATLAB evaluates the function and then applies the dot indexing operation to the result.
For example, this function creates a structure:
function out = createStruct(in)
out = struct("aField", in);
end
You can call this function and immediately access the structure field it creates:
createStruct(3).aField
7 Commenti
Walter Roberson
il 21 Lug 2022
Oh, of course, that second example thinks it is indexing into a variable named 'struct', makes more sense now.
Bruno Luong
il 21 Lug 2022
It does not do what you want but it runs without error
figure(gcf().Number).Name = 'hello'
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Loops and Conditional Statements 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!