Tôi nhận thấy khi viết assert
trong 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 T
giá 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 @autoclosure
trả 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à @autoclosure
gì
Chỉnh sửa: @auto_closure
đã được đổi tên@autoclosure
f({2 >1}())