Modify

Opened 13 years ago

Last modified 2 years ago

#2278 assigned Feature Request

Varargs

Reported by: Matt Diesel 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 by trancexx, 13 years ago

Maybe like this.

Func Foo($x, $y, ...)
    For $param In @Params
        ConsoleWrite($param & @LF)
    Next
EndFunc

comment:2 by Jon, 13 years ago

Resolution: Rejected
Status: newclosed

comment:3 by Matt Diesel, 13 years ago

Resolution: Rejected
Status: closedreopened

in reply to:  1 comment:4 by anonymous, 12 years ago

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 by J-Paul Mesnage, 5 years ago

Owner: set to J-Paul Mesnage
Status: reopenedassigned

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 by J-Paul Mesnage, 2 years ago

Owner: changed from J-Paul Mesnage to Jon

Modify Ticket

Action
as assigned The owner will remain Jon.

Add Comment


E-mail address and name can be saved in the Preferences .
 
Note: See TracTickets for help on using tickets.