|
6.2.7 Return type of proceduresAlthough the SINGULAR language is a strongly typed programming
language, the type of the
return value of a procedure does not need to be specified. As a
consequence, the return type of a procedure may vary, i.e., may, for
example, depend on the input. However, the return value
of such a procedure may then only be assigned to a variable of type
proc type_return (int i)
{
if (i > 0) {return (i);}
else {return (list(i));}
}
def t1 = type_return(1);
def t2 = type_return(-1);
typeof(t1); typeof(t2);
→ int
→ list
Furthermore, it is mandatory to assign the return value of a procedure
to a variable of type proc def_return
{
ring r=0,(x,y),dp;
poly p = x;
keepring r;
return (x);
}
def p = def_return();
// poly p = def_return(); would be WRONG!!!
typeof(p);
→ poly
On the other hand, more than one value can be returned by a single
proc tworeturn () { return (1,2); }
int i,j = tworeturn();
|
| |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |