diff --git a/+misc/functionArguments.m b/+misc/functionArguments.m index 9cd5f3c432c5662cee2efa8fa8cb4876bb94d189..477dacc44905baa035e7936cb69dd7f593eb0da9 100644 --- a/+misc/functionArguments.m +++ b/+misc/functionArguments.m @@ -2,9 +2,7 @@ function names = functionArguments(func) %FUNCTIONARGUMENTS extracts the arguments of a function handle % names = misc.functionArguments(func) returns the arguments of the function handle func as the % string array names -%% Example -% names = functionArguments(@(z, zeta, t) z*zeta+t) -functionArguments = regexp(func2str(func), "(?<=@\().*?(?=\))", "match"); +functionArguments = extractBetween(func2str(func), "@(", ")"); names = split(string(functionArguments), ","); end diff --git a/+unittests/+misc/testMisc.m b/+unittests/+misc/testMisc.m index 77c2ddf9e594ce013b841b56ccc50867b61ab1b4..afbfcfe58d94ab6d67c17ec9c7d0877dc95568be 100644 --- a/+unittests/+misc/testMisc.m +++ b/+unittests/+misc/testMisc.m @@ -6,11 +6,18 @@ end function testFunctionArguments(tc) + % single variable case names = misc.functionArguments(@(z) sin(z)); tc.verifyEqual(names, "z"); + % multi variable case names = misc.functionArguments(@(z, zeta, t) z*zeta+t); tc.verifyEqual(names, ["z"; "zeta"; "t"]); + + % none variable case + names = misc.functionArguments(@() sin(4)); + tc.verifyEqual(names, ""); + end % testFunctionArguments() function testBinomial(testCase)