मैंने देखा assert
कि स्विफ्ट में लिखते समय कि पहला मान टाइप किया गया है
@autoclosure() -> Bool
के T
माध्यम से अस्तित्व का परीक्षण करने के लिए एक सामान्य मूल्य वापस करने के लिए एक अतिभारित विधि के साथ LogicValue
protocol
।
हालांकि हाथ पर सवाल करने के लिए सख्ती से चिपका। यह एक चाहते प्रतीत होता है @autoclosure
कि एक रिटर्न Bool
।
एक वास्तविक क्लोजर लिखना जो कोई पैरामीटर नहीं लेता है और एक बूल लौटाता है, काम नहीं करता है, यह चाहता है कि मैं इसे संकलित करने के लिए क्लोजर को कॉल करूं, जैसे:
assert({() -> Bool in return false}(), "No user has been set", file: __FILE__, line: __LINE__)
हालाँकि बस एक बूल काम करता है:
assert(false, "No user has been set", file: __FILE__, line: __LINE__)
तो क्या चल रहा है? क्या है @autoclosure
?
संपादित करें: @auto_closure
नाम बदल दिया गया था@autoclosure
f({2 >1}())