Я просматриваю различия, представленные проекту другим разработчиком, и у них есть много кода, который делает !!<some BOOL value>
. Фактически, это, кажется, их стандартный шаблон для реализации логических методов получения и установки. Они реализовали свой код как:
- (BOOL) hasId {
return !!hasId_;
}
- (void) setHasId:(BOOL) value {
hasId_ = !!value;
}
Я никогда не видел этот паттерн раньше, и мне интересно, есть ли польза от его использования. Делает ли двойное отрицание что-нибудь полезное?