আমি সুইফটে লিখার সময় লক্ষ্য করেছি 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}())