В логике и в *хм* правильно разработанных языках программирования сравнение логического значения с истинным всегда избыточно, т. е. a == True
следует заменить просто a
. (И аналогично, a == False
на not a
).
Многие языки, включая C, не имеют надлежащего логического типа, поэтому может иметь значение, сравниваете ли вы с истинным (например, 2 == true
дает 0
, которое как логическое значение представляет ложь, в то время как 2
само по себе может представлять истинный).
Это также проблема в Фортране, или я всегда могу заменить a .eqv. .true.
на a
?
(Я обнаружил это в каком-то устаревшем коде, и я сильно подозреваю, что это всего лишь одна из многих вещей, которые авторы на самом деле не продумали... но мне любопытно, действительно ли там спрятан какой-то особый случай, на который я должен обращать внимание. .)