我會把你的四個布爾值作爲四位,所以它是一個0到15之間的整數。我創建一個包含16個元素的數組,並在數組的每個元素中存儲一個函數指針。每當你需要這樣做時,我都會將布爾值計算爲位模式,轉換爲int,然後調用存儲在數組索引中的方法。
我知道你在問關於PHP的問題,恐怕我不知道。在C#中,你可以這樣做:
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 ""; }};
}
使用較少的if語句。嚴重的是,這個問題很模糊 – 2011-02-10 19:48:11
請不要使用開關。 – 2011-02-10 19:49:04