Functions with variable-length argument lists
BlitzMax Forums/BlitzMax Programming/Functions with variable-length argument lists| 
 | ||
| Is it possible in BMax to create functions/methods with variable-lnegth argument lists. Somthing like this in c++ 
#include <cstdarg>
#include <iostream>
using namespace std;
double average ( int num, ... )
{
  va_list arguments;                     // A place to store the list of arguments
  double sum = 0;
  va_start ( arguments, num );           // Initializing arguments to store all values after num
  for ( int x = 0; x < num; x++ )        // Loop until all numbers are added
    sum += va_arg ( arguments, double ); // Adds the next value in argument list to sum.
  va_end ( arguments );                  // Cleans up the list
  return sum / num;                      // Returns some number (typecast prevents truncation)
}
int main()
{
  cout<< average ( 3, 12.2, 22.3, 4.5 ) <<endl;
  cout<< average ( 5, 3.3, 2.2, 1.1, 5.5, 3.3 ) <<endl;
}
 | 
| 
 | ||
| No. Pass in a TList or Array, perhaps. | 
| 
 | ||
| or create a function with multiple default arguments: function test(x:Int = null , y:Int = null , z:Int = null , t:Int = null) if X <> null print X if Y <> null print Y if Z <> null print Z if t <> null print t end function test(1) test(1 , 2) test(1 , 2 , 3) test(1,2,3,4) Not ideal of course | 
| 
 | ||
| Yuck :-) | 
| 
 | ||
| I'd use an array, as Brucey suggested... Strict
Print Mean([3!, 12.2!, 22.3!, 4.5!])
Print Mean([5!, 3.3!, 2.2!, 1.1!, 5.5!, 3.3!])
End
Function Mean!(num![])
  Local sum!
  
  For Local x = 0 Until num.Length
    sum! :+ num[x]
  Next
  
  Return sum! / num.Length
End Function | 
| 
 | ||
| thanks guys. Using an Array is perfect for my needs ;) | 
| 
 | ||
|  Yuck :-)   I never said it was a good way to do it :) |