Любой способ упростить этот код, более эффективный? - PullRequest
0 голосов
/ 18 января 2012

Есть ли способ упростить этот код?оператор elseif, похоже, не работает и заставляет мое приложение выбрасывать ошибки.

if(@@Employee_Position=="Manager") {

    if(@@CER_BioMed == "Y" && @@CER_PO == "Y")
        @%ISINDEX=5;
    elseif(@@CER_BioMed == "Y" && @@CER_PO != "Y")
        @%ISINDEX=4;
    elseif(@@CER_BioMed != "Y" && @@CER_PO == "Y")
        @%ISINDEX=4;
    else
        @%ISINDEX=3;
    }
else {
    if(@@CER_BioMed == "Y" && @@CER_PO == "Y")
        @%ISINDEX=6;
    elseif(@@CER_BioMed == "Y" && @@CER_PO != "Y")
        @%ISINDEX=5;
    elseif(@@CER_BioMed != "Y" && @@CER_PO == "Y")
        @%ISINDEX=5;
    else
        @%ISINDEX=4;
}

ОБНОВЛЕНИЕ: Извините за непонятность.Первое размещение здесь.Это на языке php.Это триггер php для Processmaker BPS.

Ответы [ 4 ]

5 голосов
/ 18 января 2012

Поскольку я не знаю, что это за язык, я буду держать его в некотором роде:

isindex = 3;
if (employee_position != 'manager') {
    isindex++;
}
if (cer_biomed == 'y') {
    isindex++;
}
if (cer_po == 'y') {
    isindex++;
}
0 голосов
/ 18 января 2012

Вычислить число от 0 до 7, используя

lookup_table_index = (
    ((@@Employee_Position=="Manager") << 2)
     | ((@@CER_BioMed == "Y") << 1)
     | (@@CER_PO == "Y"))

, а затем использовать его в качестве индекса в массиве длины 8 со значениями для @% INDEX.

lookup_table = [4, 5, 5, 6, 3, 4, 4, 5]

тогда вы можете вычислить ваш индекс

 INDEX = lookup_table[lookup_table_index]
0 голосов
/ 18 января 2012

Ну, исходя из того, что дано, я бы сказал что-то вроде этого:

if(@@CER_BioMed == "Y" && @@CER_PO == "Y")
    @%ISINDEX=5;
elseif(@@CER_BioMed != "Y" XOR @@CER_PO != "Y")
    @%ISINDEX=4;
else
    @%ISINDEX=3;

if(@@Employee_Position=="Manager")
    @%ISINDEX-=1;

Предполагая, что это любой язык, поддерживает оператор -=.

0 голосов
/ 18 января 2012

Я не знаю, на каком это языке, но:

elseif(@@CER_BioMed == "Y" && @@CER_PO != "Y")
              @%ISINDEX=4;    // or 5
           elseif(@@CER_BioMed != "Y" && @@CER_PO == "Y")
              @%ISINDEX=4;    // or 5

кажется очевидным случаем OR:

elseif(@@CER_BioMed == "Y" || @@CER_PO == "Y")
              @%ISINDEX=4;    // or 5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...