Tôi đang xem xét các khác biệt được gửi cho một dự án của một nhà phát triển khác, và họ có rất nhiều mã mà không !!<some BOOL value>
. Trong thực tế, điều này có vẻ là mô hình tiêu chuẩn của họ để thực hiện boolean getters và setters. Họ đã triển khai mã của họ như:Mục tiêu-C - Có !! BOOL Beneficial
- (BOOL) hasId {
return !!hasId_;
}
- (void) setHasId:(BOOL) value {
hasId_ = !!value;
}
Tôi chưa bao giờ thấy mẫu này trước đây và tôi tự hỏi liệu có lợi ích gì khi sử dụng nó hay không. Sự phủ định kép có làm ích gì không?
lần duy nhất tôi thấy là một lớp không phải là cách đơn giản để chuyển sang bool, vì vậy họ không thể làm 'if (myInstance)', nhưng nó đã làm quá tải toán tử '!' , vì vậy họ sẽ làm 'if (!! myInstance)'. Nhưng trong trường hợp của bạn, tôi không có ý tưởng. – filipe