parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

Uarik 27.07.2020 10:17

Наверное прозвучит бредово, но: если ли способ, чтобы метод "выводил одно, а возвращал другое"? Что я имею ввиду — метод @mark возвращает либо число либо строки "Н/Д" и "Ошибка".

Впоследствии мне нужно, каким бы ни было значение - его выводить на экран и еще добавить знак "%". И на некоторых экранах, если это число, запускать метод @markcolor чтобы закрасить кнопку в нужный цвет.

Раньше у меня это было реализовано процедурно так:
^if(def $marktable.cnt && $marktable.cnt!=0){
$skillmark($marktable.sum/($marktable.cnt*2)*100)
#теперь, если есть переменная $skillmark я ее расскрашиваю
^switch($skillmark){...} 
}
#вывожу значение переменной с знаком % и с раскрашеной ячейкой
<td class="$tdkcolor">
^skillmark.format[%.1f] %
   </td>
}{
#...или вывожу нерасрашенное Н/Д
<td> Н/Д </td>
}
}{
<td> Ошибка  </td>
} 
Но так, как выводить нужно было не всегда в таблицу, не всегда нужен знак процента в конце и не всегда нужно расскрашивать — было много дублей кода. Поэтому создал класс с двумя методами.

Но если рашьше, у меня либо была переменная $skillmark - и тогда я уже запускал расскраску и добавлял %. Либо ее не было, и я просто выводил "Н/Д".

Сейчас же результат метода мне отдает результат в любом случае.