Tratterei i quattro valori booleani come quattro bit, quindi come un numero intero compreso tra 0 e 15. Creerei un array con 16 elementi e memorizzerei un puntatore a funzione in ciascun elemento dell'array. Ogni volta che devi farlo, valuterò i booleani in un pattern di bit, convertirò in int e chiamerò il metodo memorizzato in quell'indice dell'array.
So che mi stai chiedendo di PHP, che temo di non sapere. In C#, è possibile fare qualcosa di simile:
static class Multiplexer
{
public static string Multiplex(bool a, bool b, bool c, bool d)
{
var i = 0;
i |= (a ? 1 : 0) << 3;
i |= (b ? 1 : 0) << 2;
i |= (c ? 1 : 0) << 1;
i |= (d ? 1 : 0);
return _functions[i]();
}
private static Func<string>[] _functions = new Func<string>[] {
() => { return "pie";},
() => { return "index 1"; },
() => { return DateTime.Now.ToString(); },
() => { return "pie";},
() => { return "index 1"; },
() => { return DateTime.Now.ToString(); },
() => { return Assembly.GetExecutingAssembly().FullName; },
() => { return ""; },
() => { return "pie";},
() => { return "index 1"; },
() => { return DateTime.Now.ToString(); },
() => { return "pie";},
() => { return "index 1"; },
() => { return DateTime.Now.ToString(); },
() => { return Assembly.GetExecutingAssembly().FullName; },
() => { return ""; }};
}
Utilizzare meno istruzioni if. Seriamente, questa domanda è così vaga –
Beh, non usare l'interruttore, per favore. –
Non penso che 'e' funzionerebbero qui (all'interno dell'interruttore). Usa '.'? http: // tastiera codici.org/X4fIQsSz – Dogbert