How do I create custom signatures for non-static class methods?

4 Ansichten (letzte 30 Tage)
Hi all,
I'm having trouble getting MATLAB to display the custom signatures for some of my non-static class methods.
For example, if I have a class:
classdef SomeClass
methods(Access = public)
function obj = SomeClass(a,b,c)
% ...
end
function this = foo(this,x,y,z)
% ...
end
end
end
a functionSignatures.json file:
{
"_schemaVersion": "1.0.0",
"SomeClass.SomeClass":
{
"inputs":
[
{
"mutuallyExclusiveGroup":
[
[
{"name":"A", "kind":"required", "type":"logical"}
],
[
{"name":"X", "kind":"required", "type":"numeric"},
{"name":"Y", "kind":"required", "type":"numeric"},
{"name":"Z", "kind":"required", "type":"numeric"}
]
]
}
]
},
"SomeClass.foo":
{
"inputs":
[
{
"mutuallyExclusiveGroup":
[
[
{"name":"A", "kind":"required", "type":"logical"}
],
[
{"name":"X", "kind":"required", "type":"numeric"},
{"name":"Y", "kind":"required", "type":"numeric"},
{"name":"Z", "kind":"required", "type":"numeric"}
]
]
}
]
}
}
and a script file:
clar,clc,validateFunctionSignaturesJSON("./functionSignatures.json");
obj = SomeClass(...);
obj.foo(...);
Line 1 completes with no messages. Line 2 gives me an autocomplete popup with 2 signatures. Line 3 shows no autocomplete popup. Any idea what I'm doing wrong?
  1 Kommentar
Matt J
Matt J am 8 Feb. 2024
Bearbeitet: Matt J am 8 Feb. 2024
Your post does not appear to be a copy-paste of the code you actually ran, which means it would be hazardous for us to assess it. In particular, there is no Matlab function called validateFunctionSignatures (although there is a function called validateFunctionSignaturesJSON). So, Line 1 should not have completed at all.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Steven Lord
Steven Lord am 8 Feb. 2024
The foo method of your SomeClass class is an ordinary method (as opposed to a static method) so at least one of the inputs must be an instance of the SomeClass class.
From the Signature Objects section on this documentation page, "If you specify an instance method such as myClass.myMethod in the JSON file, one of the elements in inputs must be an object of myClass. Typically, this object is the first element. MATLAB supports code suggestions and completions for a specified method when you call it using either dot notation (b = myObj.myMethod(a)) or function notation (b = myMethod(myObj,a)) syntax."
The JSON file segment you posted does not satisfy this requirement.

Weitere Antworten (0)

Kategorien

Mehr zu Software Development Tools finden Sie in Help Center und File Exchange

Produkte


Version

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by