ฉันสังเกตเห็นเมื่อเขียนassert
ใน Swift ว่าค่าแรกพิมพ์เป็น
@autoclosure() -> Bool
มีวิธีการมากเกินไปที่จะกลับทั่วไปค่าต่อการดำรงอยู่การทดสอบผ่านทางT
LogicValue
protocol
อย่างไรก็ตามการเกาะติดกับคำถามในมืออย่างเคร่งครัด แต่ดูเหมือนว่ามันต้องการที่ส่งกลับ@autoclosure
Bool
การเขียนการปิดจริงที่ไม่มีพารามิเตอร์และส่งคืน Bool ไม่ทำงานฉันต้องการเรียกการปิดเพื่อให้คอมไพล์เช่น:
assert({() -> Bool in return false}(), "No user has been set", file: __FILE__, line: __LINE__)
อย่างไรก็ตามเพียงผ่าน Bool ทำงาน:
assert(false, "No user has been set", file: __FILE__, line: __LINE__)
แล้วเกิดอะไรขึ้น คือ@autoclosure
อะไร
แก้ไข: @auto_closure
ถูกเปลี่ยนชื่อ@autoclosure
f({2 >1}())