«

»

dic 25

Print this Articolo

LUA – Funzione Switch

Uno dei costrutti fondamentali della programmazione è appunto lo switch; esso permette di eseguire un determinato blocco di istruzioni in base ad un indicatore, solitamente detto “case” (in italiano caso).

In LUA,  la soluzione più semplice è creare una funzione che prenda in ingresso una variabile “case” e che in base a quest’ultima esegua un determinato blocco di istruzioni piuttosto che un altro.

function switch(case)
 if case==1 then
    <istruzioni>
 end
 else
    if case==2 then
       <istruzioni>
    end
 end
 else
    if case==3 then
       <istruzioni>
    end
 end
end

In questo modo la funzione creata in base al parametro passatogli esegue il blocco di istruzioni corretto e successivamente esce dall’esecuzione.

Ma questo non è il modo più efficiente di risolvere il problema.

Solitamente si indicizza una tabella di funzioni, in questo modo:

action={
   [1] = function (y) screen:print(0,0,"case 1",color) end,
   [2] = function (y) screen:print(0,0,"case 2",color) end,
   [3] = function (y) screen:print(0,0,"case 3",color) end,
   [4] = function (y) screen:print(0,0,"case 4",color) end,
}

E successivamente per utilizzare lo switch si scrive action[x](y), dove la “x” viene utilizzata per determinare il case e quindi il blocco di istruzioni da eseguire e la y è la variabile che viene passata alla funzione eseguita nel case scelto.

Così facendo si evita di dover utilizzare i costrutti if - else - else if, e il codice diventa molto più efficiente, ma purtroppo diventa anche molto più “criptico” XD.

_____________________________________________________________________________________________ Ti è piaciuto questo articolo ? Condividilo !

Permanent link to this article: http://taketheball.altervista.org/?p=542

Lascia un Commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

Puoi usare i seguenti tag HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>