Modify ↓
      
        Opened 13 years ago
Last modified 20 months ago
#2278 assigned Feature Request
Varargs
| Reported by: | Mat | Owned by: | Jon | 
|---|---|---|---|
| Milestone: | Component: | AutoIt | |
| Version: | Severity: | None | |
| Keywords: | varargs, params | Cc: | 
Description
A syntax like C# would probably be the easiest, example would be:
Foo(42, 24, "Hello", "World", "!!!")
Func Foo($x, $y, Params $bar)
    For $i = 0 To UBound($bar) - 1
        ConsoleWrite($bar[$i] & @LF)
    Next
EndFunc
    Attachments (0)
Change History (6)
comment:1 follow-up: ↓ 4 Changed 13 years ago by trancexx
comment:2 Changed 12 years ago by Jon
- Resolution set to Rejected
 - Status changed from new to closed
 
comment:3 Changed 12 years ago by Mat
- Resolution Rejected deleted
 - Status changed from closed to reopened
 
comment:4 in reply to: ↑ 1 Changed 11 years ago by anonymous
I would suggest this syntax.
Func f (...$argArray) ; Use the argument array. EndFunc
It is done the same way in other languages.
// C++
template <typename... types>
void f (types &&... argArray);
template <int... sizes>
void print (const char (&... arrayReferences) [sizes]);
// JS
function apply (f, ...argArray) { /* ... */ }
It would be useful to allow ByRef and Const before the ellipsis (_ArrayConcatenate (ByRef $to, Const ByRef ...$from)).
comment:5 Changed 5 years ago by Jpm
- Owner set to Jpm
 - Status changed from reopened to assigned
 
I introduce a new keyword in Func() definition to allow handling the variable number of parameter
f(1, 2) Func f (ByVarArgs $argArray) For $i = 1 to @NumParams ; use $argArray[$i] Next EndFunc
Fix sent to Jon
comment:6 Changed 20 months ago by Jpm
- Owner changed from Jpm to Jon
 
Guidelines for posting comments:
- You cannot re-open a ticket but you may still leave a comment if you have additional information to add.
 - In-depth discussions should take place on the forum.
 
For more information see the full version of the ticket guidelines here.
Note: See
        TracTickets for help on using
        tickets.
    
Maybe like this.
Func Foo($x, $y, ...) For $param In @Params ConsoleWrite($param & @LF) Next EndFunc