Dollarteckenexpansion med parametrar
Parametrar kan användas i dollarteckenexpansioner. Det gör det möjligt att ha en dynamisk utvärdering av variabeln.
Variabeln som skapas för användning i expansionen måste innehålla formella parametrar. En formell parameter är en platshållare för inmatning till utvärderingen och skrivs med ett dollartecken: $1, $2, $3. Talet indikerar parameternumret.
När variabeln används ska de faktiska parametrarna anges i en kommaseparerad lista.
Exempel: Parametrar i dollarteckenexpansioner
Om du vill definiera en multiplikation mellan två tal kan du skriva:
Set MUL= $1*$2 ;
Det definierar att $1 och $2 ska multipliceras med varandra. När den används måste den här variabeln dollarexpanderas med värden för $1 och $2 som infogas i uttrycket:
Set X= $( MUL(3,7) ) ;
Värdena (3 och 7) är de faktiska parametrarna som ersätter $1 och $2 i expansionen. Expansionen görs innan set-satsen tolkas och körs, vilket innebär att skriptparsern ser följande:
Set X= 3*7 ;
Det innebär att variabeln X kommer att tilldelas strängvärdet: 3*7.
Om du använder en Let-sats istället för Set-satsen:
Let X= $( MUL(3,7) ) ;
Parsern kommer att se följande:
Let X= 3*7 ;
Här kommer en utvärdering att göras och X kommer att tilldelas det numeriska värdet 21.
Antalet parametrar
Om antalet formella parametrar överskrider antalet faktiska parametrar kommer endast de formella parametrar som motsvaras av faktiska parametrar att expanderas. Om antalet faktiska parametrar överskrider antalet formella parametrar kommer de överflödiga faktiska parametrarna att ignoreras.
Exempel: Formella parametrar kontra faktiska parametrar
Set MUL= '$1*$2' ;
Set X= $(MUL) ; // returns $1*$2 in X
Set X= $(MUL(10)) ; // returns 10*$2 in X
Let X= $(MUL(5,7,8)) ; // returns 35 in X
Parametern $0
Parametern $0 returnerar antalet parametrar som faktiskt har anropats.
Exempel: Så här går det till att introducera felhantering
Set MUL= If($0=2, $1*$2, 'Error') ;