Tôi nhận thấy khi viết asserttrong Swift rằng giá trị đầu tiên được nhập là
@autoclosure() -> Bool
với một phương thức quá tải để trả về một Tgiá trị chung , để kiểm tra sự tồn tại thông qua LogicValue protocol.
Tuy nhiên, bám sát vào câu hỏi trong tầm tay. Có vẻ như muốn @autoclosuretrả về a Bool.
Viết một bao đóng thực tế không có tham số và trả về Bool không hoạt động, nó muốn tôi gọi bao đóng để làm cho nó biên dịch, như vậy:
assert({() -> Bool in return false}(), "No user has been set", file: __FILE__, line: __LINE__)
Tuy nhiên, chỉ cần truyền Bool hoạt động:
assert(false, "No user has been set", file: __FILE__, line: __LINE__)
Vậy chuyện gì đang xảy ra thế? Là @autoclosuregì
Chỉnh sửa: @auto_closure đã được đổi tên@autoclosure
f({2 >1}())