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