[Scilab-users] Get back the name of a function given as argument
Pierre Vuillemin
contact at pierre-vuillemin.fr
Tue Oct 13 09:36:33 CEST 2015
My bad, I've just realised that
- this routine will actually give the name of the last copy of the
function (in case of multiple imbricated function calls),
- besides, a simpler solution consists in using the name of the local
copy of the function.
deff('y = fun(x)','y = x^2');
deff('y = f(x)','y = x');
deff('minimize(f)','disp(evstr(''f(2)''))');
minimize(f) // displays 2
minimize(fun) // displays 4
Le 13.10.2015 08:44, Pierre Vuillemin a écrit :
> Hi Samuel,
>
> Thank you for the answer. I have finally came up with this routine :
>
> function funName = sopi_retrieveFunName(f)
> varList = who_user(%f);
> for i = 2:size(varList,1) // "f" is the local copy of the function
> and is the first one in the varList, it must be discarded
> varName = varList(i);
> execstr("var = "+varName);
> if var == f then
> funName = varName;
> break;
> end
> end
> endfunction
>
> It retrieves the name of the function given as argument by comparing
> it to the user's variables. It (very) far from being elegant, but it
> seems to work.
>
> Will there be a better way to achieve that with Scilab 6 ?
>
> Pierre
>
>
> Le 12.10.2015 21:02, Samuel Gougeon a écrit :
>> Hi Pierre,
>>
>> Le 12/10/2015 16:46, Pierre Vuillemin a écrit :
>>> Hi all,
>>>
>>> I am building some optimisation tools, and in this context, I was
>>> wondering if it was possible to get back the name of a function given
>>> as argument of another function.
>>>
>>> More specifically, consider the function 'fun' defined as
>>>
>>> deff('[f,g] = fun(x)','f = x^2;g = 2*x');
>>>
>>> and an optimisation routine "minimize" which first argument is a
>>> function.
>>>
>>> Is there a way to get back the name of the function "fun" when
>>> calling "minimize(fun)" ?
>>
>> I am afraid that, with 5.5.2, you have to use something like
>> minimize("thefun") instead, with
>>
>> function argout = minimize(fun,...)
>> execstr("fun="+fun);
>> ...
>> endfunction
>>
>> Samuel
>>
>> _______________________________________________
>> users mailing list
>> users at lists.scilab.org
>> http://lists.scilab.org/mailman/listinfo/users
>
> _______________________________________________
> users mailing list
> users at lists.scilab.org
> http://lists.scilab.org/mailman/listinfo/users
More information about the users
mailing list