In OCaml, se devo scrivere una funzione utilizzando molti if-then-else, di seguito è la mia soluzione stupida e brutta.Scrivi codice nidissimo if-then-else nidificato abbastanza in OCaml?
let foo() =
let a1 = ... in
if (a1) then
result1
else
let a2 = ... in
if (a2) then
result2
else
let a3 = ... in
if (a3) then
result3
else
let a4 = ... in
if (a4) then
result4
else
result5.
Come abbellire il codice sopra? Mi piace lo stile Java C/C++ & che usa "return" per salvare il rientro della prossima istruzione if. Posso fare la stessa cosa con OCaml?
int foo() = {
bool a1 = ...;
if (a1)
return result1;
bool a2 = ...;
if (a2)
return result2;
bool a3 = ...;
if (a3)
return result3;
bool a4 = ...;
if (a4)
return result4;
return result5;
}
OCaml non ha un'istruzione 'return':' se' è probabilmente la strada da percorrere. Se ti senti disperata, puoi dividere le cose in un'altra funzione. – gsg
Non vi è alcun motivo per indentare il primo esempio in una scala. Diversi editor lo indenterebbero verticalmente –
Alcune librerie monad in Ocaml definiscono una funzione 'return' –