বিভিন্ন ব্যবহারের ক্ষেত্রে কয়েকটি ঘরোয়া বিষয় রয়েছে তবে সাধারণত একটি আন্ডারস্কোর মানে "এটি উপেক্ষা করুন"।
নতুন ফাংশন ঘোষণার সময়, একটি আন্ডারস্কোর সুইফটকে বলে যে প্যারামিটারটির কল করার সময় কোনও লেবেল থাকা উচিত নয় - এটিই আপনি দেখছেন। একটি পূর্ণাঙ্গ ফাংশন ঘোষণার মত দেখাচ্ছে:
func myFunc(label name: Int) // call it like myFunc(label: 3)
"লেবেল" একটি আর্গুমেন্ট লেবেল এবং আপনি যখন ফাংশনটি কল করবেন তখন অবশ্যই উপস্থিত থাকতে হবে। (এবং সুইফট 3 থেকে, ডিফল্টরূপে সমস্ত যুক্তির জন্য লেবেলগুলি প্রয়োজনীয় required) ফাংশনের অভ্যন্তরে আপনি যে যুক্তিটি ব্যবহার করেন তার নাম "নাম" the একটি সংক্ষিপ্ত রূপটি দেখতে দেখতে:
func myFunc(name: Int) // call it like myFunc(name: 3)
এটি একটি শর্টকাট যা আপনাকে বাহ্যিক আর্গুমেন্ট লেবেল এবং অভ্যন্তরীণ প্যারামিটার নাম উভয়ের জন্য একই শব্দটি ব্যবহার করতে দেয়। এর সমতুল্য func myFunc(name name: Int)।
আপনি যদি প্যারামিটার লেবেল ছাড়াই আপনার ফাংশনটি কল করতে চান তবে আপনি আন্ডারস্কোরটি লেবেলটিকে _কিছুই / উপেক্ষা করার জন্য ব্যবহার করবেন । (সেই ক্ষেত্রে আপনি যদি প্যারামিটারটি ব্যবহার করতে সক্ষম হতে চান তবে আপনাকে একটি অভ্যন্তরীণ নাম সরবরাহ করতে হবে))
func myFunc(_ name: Int) // call it like myFunc(3)
একটি কার্যনির্বাহী বিবৃতিতে, একটি আন্ডারস্কোর অর্থ "কোনও কিছুকে বরাদ্দ করবেন না"। আপনি যদি এমন কোনও ফাংশনটিতে কল করতে চান যা কোনও ফলাফল দেয় তবে আপনি যে মানটি ফিরে পেয়েছেন সে সম্পর্কে চিন্তা না করে আপনি এটি ব্যবহার করতে পারেন।
_ = someFunction()
অথবা, আপনি যে নিবন্ধটির সাথে লিঙ্ক করেছেন তার মতো, ফিরে আসা টিউপের একটি উপাদানটিকে উপেক্ষা করতে:
let (x, _) = someFunctionThatReturnsXandY()
যখন আপনি কোনও ক্লোজার লিখেন যা কিছু সংজ্ঞায়িত ফাংশন প্রকার প্রয়োগ করে, আপনি নির্দিষ্ট পরামিতিগুলি উপেক্ষা করতে আন্ডারস্কোর ব্যবহার করতে পারেন।
PHPhotoLibrary.performChanges( { /* some changes */ },
completionHandler: { success, _ in // don't care about error
if success { print("yay") }
})
একইভাবে, কোনও ফাংশন যা প্রোটোকল গ্রহণ করে বা সুপারক্লাস পদ্ধতিটি ওভাররাইড করে তা ঘোষণার সময়, আপনি _প্যারামিটারের নামগুলি পরামিতিগুলি উপেক্ষা করতে ব্যবহার করতে পারেন । যেহেতু প্রোটোকল / সুপারক্লাস এছাড়াও সংজ্ঞায়িত করতে পারে যে প্যারামিটারটির কোনও লেবেল নেই, আপনি এমনকি পরপর দুটি আন্ডারস্কোর দিয়ে শেষ করতে পারেন।
class MyView: NSView {
override func mouseDown(with _: NSEvent) {
// don't care about event, do same thing for every mouse down
}
override func draw(_ _: NSRect) {
// don't care about dirty rect, always redraw the whole view
}
}
কিছুটা শেষের দুটি শৈলীর সাথে সম্পর্কিত: কোনও ফ্লো কন্ট্রোল কনস্ট্রাক্ট ব্যবহার করার সময় যা কোনও স্থানীয় ভেরিয়েবল / ধ্রুবককে আবদ্ধ করে, আপনি _এটিকে উপেক্ষা করার জন্য ব্যবহার করতে পারেন। উদাহরণস্বরূপ, যদি আপনি এর সদস্যদের অ্যাক্সেসের প্রয়োজন ছাড়াই কোনও ক্রম পুনরাবৃত্তি করতে চান:
for _ in 1...20 { // or 0..<20
// do something 20 times
}
আপনি যদি একটি স্যুইচ বিবৃতিতে টুপল কেসগুলিকে আবদ্ধ করেন, আন্ডারস্কোরটি ওয়াইল্ডকার্ড হিসাবে কাজ করতে পারে, উদাহরণ হিসাবে ( দ্য সুইফ্ট প্রোগ্রামিং ভাষার একটি থেকে সংক্ষিপ্ত ):
switch somePoint { // somePoint is an (Int, Int) tuple
case (0, 0):
print("(0, 0) is at the origin")
case (_, 0):
print("(\(somePoint.0), 0) is on the x-axis")
case (0, _):
print("(0, \(somePoint.1)) is on the y-axis")
default:
print("(\(somePoint.0), \(somePoint.1)) isn't on an axis")
}
একটা শেষ জিনিস যে বেশ সাথে সম্পর্কিত না, কিন্তু যা আমি যেহেতু অন্তর্ভুক্ত করব (যেমন মন্তব্য লক্ষনীয়) তা এখানে লোকেদের নেতৃত্ব দেওয়ার জন্য বলে মনে হয়: একটি আন্ডারস্কোর মধ্যে - যেমন একটি আইডেন্টিফায়ার var _foo, func do_the_thing(), struct Stuff_- মানে সুইফট বিশেষ কিছুই, কিন্তু কিছু ব্যবহার করা হয় প্রোগ্রামারদের মধ্যে।
নামের মধ্যে বোঝার শৈলীগুলি একটি শৈলীর পছন্দ, তবে সুইফ্ট সম্প্রদায়টিতে পছন্দ হয় না, যা অন্য ধরণের চিহ্নের জন্য আপারকামেলকেস এবং লোয়ারকামেলকেস প্রকারের জন্য ব্যবহারের বিষয়ে দৃ conven় সম্মেলন করে।
আন্ডারস্কোর সহ একটি প্রতীক নামের উপসর্গ বা প্রত্যয় একটি স্টাইলের কনভেনশন, historতিহাসিকভাবে রফতানিকারকৃত API থেকে ব্যক্তিগত / অভ্যন্তরীণ-ব্যবহৃত-চিহ্নগুলি পৃথক করতে ব্যবহৃত হয়। তবে এর জন্য সুইফ্টের অ্যাক্সেস মডিফায়ার রয়েছে, তাই সাধারণত এই সম্মেলনটি সুইফটে অ-প্রতিমা হিসাবে দেখা হয়।
func __foo()অ্যাপলের এসডিকেগুলির গভীরতায় ডাবল-আন্ডারস্কোর উপসর্গগুলি ( ) লুকিয়ে থাকা কয়েকটি চিহ্ন : এগুলি NS_REFINED_FOR_SWIFTঅ্যাট্রিবিউটটি ব্যবহার করে সুইফটে আমদানি করা (ওবজ) সি প্রতীক । অ্যাপল ব্যবহার করে যে যখন তারা কোনও (ওবিজে) সি এপিআইয়ের একটি "আরও সুইফটি" সংস্করণ তৈরি করতে চান - উদাহরণস্বরূপ, জেনেরিক পদ্ধতিতে টাইপ-অজোনস্টিক পদ্ধতি তৈরি করতে । পরিশোধিত সুইফ্ট সংস্করণটি তৈরি করতে তাদের আমদানি করা API ব্যবহার করা দরকার, তাই __বেশিরভাগ সরঞ্জাম এবং ডকুমেন্টেশন থেকে এটি লুকিয়ে রাখার সময় তারা এটি উপলব্ধ রাখার জন্য ব্যবহার করে ।