Since when has it been possible to dot-index the output of a class method?

2 visualizaciones (últimos 30 días)
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 =
myClass with properties: p: 2
obj.increment.p
ans = 3
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 comentario
Matt J
Matt J el 18 de Mayo de 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}
ans = 30
obj.num2cell{3}
ans = 70

Iniciar sesión para comentar.

Respuesta aceptada

Walter Roberson
Walter Roberson el 19 de Mayo de 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
For more information, see Indexing into Function Call Results.
  7 comentarios
Walter Roberson
Walter Roberson el 21 de Jul. de 2022
Oh, of course, that second example thinks it is indexing into a variable named 'struct', makes more sense now.
Bruno Luong
Bruno Luong el 21 de Jul. de 2022
It does not do what you want but it runs without error
figure(gcf().Number).Name = 'hello'
figure = struct with fields:
Name: 'hello'

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Productos


Versión

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by