overloading problem ... next
ycollet at freesurf.fr
ycollet at freesurf.fr
Wed Apr 1 14:40:06 CEST 2009
A sample test for the overloading limitation for 8 char:
myvar1 = tlist(['scilabmyvar1','x','y'],2.0,3.0);
myvar2 = tlist(['scilabmyvar2','x','y','z'],2.0,3.0, 4.0);
myvar3 = tlist(['scilabm','x','y','z'],2.0,3.0,4.0);
function y = %scilabmyvar1_sin(myvar)
printf('sin with a scilabmyvar1\n');
y = sin(2*%pi*sqrt(myvar('x')^2 + myvar('y')^2));
endfunction
function y = %scilabmyvar2_sin(myvar)
printf('sin with a scilabmyvar2\n');
y = sin(2*%pi*sqrt(myvar('x')^2 + myvar('y')^2 + myvar('z')^2));
endfunction
function y = %scilabm_sin(myvar)
printf('sin with a scilabm\n');
y = sin(2*%pi*sqrt(myvar('x')^2 + myvar('y')^2 + myvar('z')^2));
endfunction
printf('sin + scilabmyvar1 = %f\n',sin(myvar1)); // Line 1
printf('sin + scilabmyvar2 = %f\n',sin(myvar2)); // Line 2
printf('sin + scilabm = %f\n',sin(myvar3)); // Line 3
------------- end of test_overload.sce
If you comment Line 1 and Line 2:
-->exec test_overload.sce;
sin with a scilabm
sin + scilabm = 0.660535
Now, if I uncomment everything:
-->exec test_overload.sce;
printf('sin + scilabmyvar1 = %f\n',sin(myvar1));
!--error 246
Fonction non définie pour le type d'argument donné.
vérifier les arguments ou définir la fonction %scilabmy_sin pour la
surcharge.
at line 20 of exec file called by :
exec test_overload.sce;
Scilab sees only the type "scilabmy" (8 chars) and not the "scilabmyvar1"
YC
More information about the dev
mailing list