How do I create custom signatures for non-static class methods?
12 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Gwyneth Lloyd
il 8 Feb 2024
Modificato: Gwyneth Lloyd
il 13 Feb 2024
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 Commento
Matt J
il 8 Feb 2024
Modificato: Matt J
il 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.
Risposta accettata
Steven Lord
il 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.
0 Commenti
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Toolbox Distribution 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!