পড়া এই নিবন্ধটি আমি ব্যবহার মহান সুবিধা খেয়াল গার্ড
এখানে আপনি গার্ডের ব্যবহারের উদাহরণের সাথে তুলনা করতে পারেন:
এটি গার্ড ছাড়া অংশ:
func fooBinding(x: Int?) {
if let x = x where x > 0 {
// Do stuff with x
x.description
}
// Value requirements not met, do something
}
এখানে আপনি সমস্ত শর্তের মধ্যে আপনার পছন্দসই কোডটি রাখছেন
আপনি সম্ভবত এটির সাথে কোনও সমস্যা দেখতে পাবেন না, তবে আপনি কল্পনা করতে পারেন যে যদি আপনার বিবৃতি চালানোর আগে সমস্ত শর্ত পূরণ করার প্রয়োজন হয় এমন অনেক শর্তের দ্বারা বাসা বেঁধে দেওয়া হত তবে এটি কতটা বিভ্রান্তিকর হতে পারে imagine
এটি পরিষ্কার করার উপায়টি হ'ল প্রথমে আপনার প্রতিটি চেক করা এবং যদি পূরণ না হয় তবে প্রস্থান করুন। এটি শর্তগুলি কীভাবে এই ফাংশনটি প্রস্থান করবে তা সহজেই বোঝার অনুমতি দেয়।
তবে এখন আমরা প্রহরী ব্যবহার করতে পারি এবং আমরা দেখতে পাচ্ছি যে কিছু সমস্যা সমাধান করা সম্ভব:
func fooGuard(x: Int?) {
guard let x = x where x > 0 else {
// Value requirements not met, do something
return
}
// Do stuff with x
x.description
}
- আপনি যে শর্তটি চান তা যাচাই করা হচ্ছে, আপনি যা চান না তা নয়। এটি আবার একটি দৃsert়তার অনুরূপ। যদি শর্তটি পূরণ না করা হয়, তবে গার্ডের অন্য বিবৃতি চালানো হয়, যা ফাংশন থেকে বিচ্ছিন্ন হয়ে যায়।
- যদি শর্তটি পাস হয়ে যায়, তবে এখানে optionচ্ছিক চলক আপনার জন্য গার্ডের স্টেটমেন্টের যে স্কোপ বলা হয়েছিল সেগুলির মধ্যে স্বয়ংক্রিয়ভাবে মোড়ানো হবে - এই ক্ষেত্রে, fooGuard (_ :) ফাংশন।
- আপনি খুব দ্রুত খারাপ কেসগুলির জন্য যাচাই করছেন, আপনার ফাংশনটিকে আরও পঠনযোগ্য এবং বজায় রাখা সহজ করে তুলছেন
এই একই প্যাটার্নটি অ-alচ্ছিক মানগুলির জন্যও সত্য:
func fooNonOptionalGood(x: Int) {
guard x > 0 else {
// Value requirements not met, do something
return
}
// Do stuff with x
}
func fooNonOptionalBad(x: Int) {
if x <= 0 {
// Value requirements not met, do something
return
}
// Do stuff with x
}
আপনার যদি এখনও কোনও প্রশ্ন থাকে তবে আপনি পুরো নিবন্ধটি পড়তে পারেন: সুইফট গার্ডের বিবৃতি।
মোড়ক উম্মচন
এবং পরিশেষে, পড়া এবং পরীক্ষা করে আমি দেখতে পেয়েছি যে আপনি যদি কোনও বিকল্প অপসারণ করতে প্রহরী ব্যবহার করেন,
আপনার আবদ্ধ হওয়া কোডগুলি বাকী আপনার কোড ব্লকের জন্য ব্যবহারের জন্য আপনার চারপাশে থাকে
।
guard let unwrappedName = userName else {
return
}
print("Your username is \(unwrappedName)")
এখানে মোড়কযুক্ত মানটি যদি কেবলমাত্র ব্লকের ভিতরে পাওয়া যায়
if let unwrappedName = userName {
print("Your username is \(unwrappedName)")
} else {
return
}
// this won't work – unwrappedName doesn't exist here!
print("Your username is \(unwrappedName)")