나는 네 개의 부 울린을 4 비트로 처리 할 것이므로 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 문이 적게 사용합니다. 진심으로,이 질문은 너무 모호합니다 –
스위치를 사용하지 마십시오. –
나는 여기에서'and'가 (스위치 내부에서) 작동하지 않을 것이라고 생각합니다. '.'을 사용 하시겠습니까? http : // 코드 패드.org/X4fIQsSz – Dogbert