A Corbascript nyelv

Eljárások

Szintaxis

Egy eljárás definiálásának szintaktikája a következő:

<procedure_declaration>::=
  "proc" <identifier> "(" [ <formal_parameter_list> ] ")" "{" <statements> "}"

<formal_parameter_list>::= <identifier_list> { "," <identifier> "=" <expression> }*

<identifier_list>::= <identifier> " "," <identifier> }*

A proc kulcsszó segítségével lehetőségünk van eljárások deklarálására. Ehhez szükség van egy azonosítóra és a formális paraméterek listájára, amelyeket zárójelek között kell megadni. Az eljárás törzse kapcsoszárójelek között felsorolt utasítások sorozatából áll. Bármikor lehetőség van az eljárások újradefiniálására, ekkor az előző definició többé nem érhető el.

Formális és alapértelmezett paraméterek

A formális paraméterek nem típusosak és nincs korlátozva a számuk. Az utolsó formális paraméternek lehet alapértelmezett értéke. Ez az érték az eljárás deklarálásának pillanatában értékelődik ki. Az eljárás törzsében lévő utasítások úgy hivatkozhatnak a formális paraméterekre, mint lokális változók.

A formális paraméterek irhatóak és olvashatóak az eljárás törzsében, de nem befolyásolják a valódi paraméter értékét, amíg nem hívjuk meg a paraméter update metodusát.

A Visszatérési érték

Lehetőségünk van visszatérési érték átadására. Ez az érték tetszőleges CorbaScript objektum lehet. A return utasítás hatására az eljárás futása befejeződik.

Lokális és globális változók

Lokális változók az eljárás törzsében tetszőleges helyen definiálhatók. Deklarálni nem szükséges őket, ez megtörténik az első értékadáskor. Ha a lokális változónak ugyanazt a nevet adjuk, mint amit egy globális változónak előzőleg adtunk, akkor ez a globális változó az eljárás törzsben ezután láthatatlan lesz. Látható globális változó elérthető, de csak akkor irható, ha minősített hivatkozással, a global prefixel hivatkozunk rá.

Például:

>>> x = 5 >>> proc sample() { println ("x=",x) x=3 # új lokális változó println ("x=",x) global.x = global.x * 2 } >>> sample() x=5 x=3 >>> x 10

Eljárásalias

Mint már előzőleg megtudhattuk, az eljárások is objektumok, így értékül adhatóak változóknak és hivatkozhatunk rá az új névvel is, vagy átadhatjuk más eljárásoknak paraméterként. Például:

>>> alias = fac >>> alias (5) 120