- 1
- 2
- 3
- 4
if ( (value[0] - 'N') == 0 || (value[0] - 'n') == 0 )
val = 0;
if ( (value[0] - 'Y') == 0 || (value[0] - 'y') == 0 )
val = 1;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+105
if ( (value[0] - 'N') == 0 || (value[0] - 'n') == 0 )
val = 0;
if ( (value[0] - 'Y') == 0 || (value[0] - 'y') == 0 )
val = 1;
нет, просто сравнить - это слишком скучно и неоригинально.
ЗЫ от автора http://govnokod.ru/5034
#defien FALSE 1
// оно ?
Другое, Char1 & Char2 могут давать на каком-то пересечении 1, ну и соответственно...
//вариант
val = ( !(c[0] - 'Y') || !(c[0] -'y') );
кто-нибудь еще считает, что я могу допустить такую опечатку? :-P
else if value[0] in ['Y','y'] then val := 1;
val = 1 if value[0] in 'Yy' else (0 if value[0] in 'Nn' else None)
или
Целиком:
1. Очень просто, но выбрасывается не совсем то исключение, что нужно:
2. И есть сложно (можно было наверное и проще, но раз уж не важно, как именно, то так имо нормально:
Единственно, конечно описание ошибке можно было написать какое-то, но это уже кому нужно - тот напишет :)
Настаиваю на применении в варианте 2 cond и char-equal:
Нет ничего лучше, чем невзначай начирикать пару строчек на лиспе в уикэнд.
но очень напомнило груви, в котором можно писать таким же макаром
Integer val=['N':1,'Y':2].get ("yy".toUpperCase().getChars()[0], null)
>(lambda (x) (find x "yY"))
this is incorrect. try again later.
if (value[0] =='N' || value[0] =='n' ) если отсутствует метод upper() или аналогичный.