Случай переключателя с тремя параметрами?

Да, Blah.valueOf("A") даст Вам Blah.A.

Примечание, что имя должно быть точное совпадение, включая случай: Blah.valueOf("a") и Blah.valueOf("A ") оба бросают IllegalArgumentException.

статические методы valueOf() и values() создаются во время компиляции и не появляются в исходном коде. Они действительно появляются в Javadoc, хотя; например, Dialog.ModalityType шоу оба метода.

9
задан Johan 25 August 2009 в 14:00
поделиться

7 ответов

Синтаксис неверен, и я бы не рекомендовал его, даже если бы он был. Но если вы действительно хотите использовать подобную конструкцию, вы можете поместить свои значения в массив:

switch (array($var1, $var2, $var3)) {
    case array(true, false, false):
        echo "hello";
        break;
}
22
ответ дан 4 December 2019 в 07:23
поделиться

Здесь нет ситуации переключения. У вас есть несколько условий:

if($var && !($var2 || $var3)) { ...
3
ответ дан 4 December 2019 в 07:23
поделиться

Я бы просто использовал if / else

if($var1 == true && $var2 == false && $var3 == false){
    echo "Hello";
}

или

if($var1 && !($var2 && $var3)) {
    echo "Hello";
}
3
ответ дан 4 December 2019 в 07:23
поделиться

Я не думаю, что ваш синтаксис верен.

Я бы вложил операторы switch.

1
ответ дан 4 December 2019 в 07:23
поделиться

Другой вариант - создать функцию, отображающую три параметры в целое число и используйте это в инструкции switch.

function MapBool($var1, $var2, $var3){
    // ...
}

switch(MapBool($var1, $var2, $var3)) {
    case 0: 
        echo "Hello";
        break;
   // ...

}
1
ответ дан 4 December 2019 в 07:23
поделиться

Это то, что раньше обрабатывалось поразрядными операторами:

if (($var1 << 2) & ($var2 << 1) & $var3) == 4) ...

... назад, когда «истина» была 1.

При этом вышесказанное является кратким , но его довольно сложно читать и поддерживать. Тем не менее, если у вас много похожих операторов, переключение / AND может быть способом получить контроль:

switch (($var1 << 2) & ($var2 << 1) & $var3)) {
   case 0: // false, false, false
       ...stuff...
   case 1: // false, false, true
       ...different stuff...
   // all 8 cases if you REALLY care
}
1
ответ дан 4 December 2019 в 07:23
поделиться

Я не знаю - если вы действительно этого хотите - может преобразовать их все в строку, объединить и затем использовать полученную строку в вашем условии case?

-1
ответ дан 4 December 2019 в 07:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: