Funktion Parameter foo(1,10,1024) wie kann ich "1,10,1024" generieren?? unpack()???

  • hi leute,
    ich möchte zur scriptlaufzeit eine funktion aufrufen foo(1,10,1024)
    wobei die 3 oder beliebig viele variablen übergeben werden sollen,
    die zur laufzeit ermittelt werden (anzahl, typ, wert).

    sinngemäß: (was natürlich nicht funzt, da der string als ein wert erkannt wird)
    $string = $a & "," & $b & "," & $c
    foo($string)

    ?(
    wie lässt sich so etwas realisieren???

    In Lua entspräche dass
    foo(...)
    foo(unpack(array))

    ... 1000 dank für die richtige antwort!

    Einmal editiert, zuletzt von UPIA (12. Mai 2011 um 15:59)

  • Spoiler anzeigen
    [autoit]

    $sString = "1,2,3"
    $aString = StringSplit($sString, ",", 3)

    [/autoit] [autoit][/autoit] [autoit]

    _foo($aString)

    [/autoit] [autoit][/autoit] [autoit]

    _bar($sString)

    [/autoit] [autoit][/autoit] [autoit]

    Func _foo($aParam)
    ConsoleWrite("_foo()" & @CRLF)
    For $i = 0 To UBound($aParam) - 1
    ConsoleWrite("Parameter " & $i & ": " & $aParam[$i] & @CRLF)
    Next
    EndFunc ;==>_foo

    [/autoit] [autoit][/autoit] [autoit]

    Func _bar($sParam)
    Local $aParam
    $aParam = StringSplit($sParam, ",", 3)
    ConsoleWrite("_bar()" & @CRLF)
    For $i = 0 To UBound($aParam) - 1
    ConsoleWrite("Parameter " & $i & ": " & $aParam[$i] & @CRLF)
    Next
    EndFunc ;==>_bar

    [/autoit]
  • hi ic2,
    danke für die schnelle antwort!!!
    StringSplit hat den nachteil, dass ich alle teile als string zurückbekomme (evtl schwer sie wieder in das ursprüngliche format zu bekommen, wenn man nicht weiss, was man erwarten soll.
    ausserdem ist dann mein problem noch nicht gelöst, dass ich eine funktion mit der gewünschten parameterzahl aufgerufen wird.
    also ich möchte in _foo() mit den paramtern eine weitere funktion aufrufen:
    Call("Funktionsname",Para1,Para2,Para3)

    also z.b. wenn $PARA[1] = "Para1", $PARA[2] = "Para2", $PARA[3] = "Para3", dann möchte ich
    $RETURN_VAR = Funktionsname( Unpack($Para) )

    also eine funktion, die die Parameter aus einem Array o.ä. liest und mit , verkettet...

    das hab ich mal gebastelt als workaround (muss aber alle funktionen mit 10 parametern ausstatten, sonst funzt es nicht)

    Background: Ich erstelle ein Menu-Array: Spalte 1 = Angezeigter Name, Spalte 2 = Hinterlegte Funktion (auführen wenn ausgewählt)

    ...

  • Spoiler anzeigen
    Code
    function test(_a, _b, _c)
    	x = _a + _b +_c 
    	return x
    end
    
    
    a = {1,2,3}
    
    
    print( test(unpack(a)))
    Spoiler anzeigen
    [autoit]

    Dim $myArgs[4] = ["CallArgArray", 1, 2, 3]

    [/autoit] [autoit][/autoit] [autoit]

    ConsoleWrite(Call("_test", $myArgs) & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    Func _test($v0 = 0, $v1 = 0, $v2 = 0, $v3 = 0)
    Return $v0 + $v1 + $v2
    EndFunc ;==>_test

    [/autoit]