Je traiterais vos quatre booléens comme quatre bits, donc comme un entier entre 0 et 15. Je créerais un tableau avec 16 éléments, et stocker un pointeur de fonction dans chaque élément du tableau. Chaque fois que vous devez le faire, j'évalue les booléens dans un modèle binaire, convertit en int, et appelle la méthode stockée dans cet index du tableau.
Je sais que vous posez des questions sur PHP, dont j'ai peur je ne sais pas. En C#, vous pouvez faire quelque chose comme ceci:
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 ""; }};
}
Utilisez moins d'instructions if. Sérieusement, cette question est si vague –
Bien ne pas utiliser l'interrupteur, s'il vous plaît. –
Je ne pense pas que 'and 'fonctionnerait ici (à l'intérieur du commutateur). Utilisez '.'? http: // codepad.org/X4fIQsSz – Dogbert