(সুইফট 3)
অ্যারেতে কোনও উপাদান উপস্থিত রয়েছে কিনা তা পরীক্ষা করুন (কিছু মানদণ্ড পূরণ করছে ) এবং যদি তা হয় তবে এই জাতীয় উপাদানটির সাথে প্রথম কাজ করে যান
উদ্দেশ্যটি হ'ল:
- অ্যারেতে উপাদান উপস্থিত রয়েছে কিনা তা পরীক্ষা করতে (/ কিছু বুলিয়ান মানদণ্ড পূরণ করে, সমতা পরীক্ষা করার প্রয়োজন হয় না),
- এবং যদি তা হয় তবে এগিয়ে যান এবং এই জাতীয় উপাদানের সাথে কাজ করুন,
তারপরে contains(_:)
ব্লুপ্রিন্ট Sequence
করা বিকল্পের first(where:)
মধ্যে রয়েছে Sequence
:
let elements = [1, 2, 3, 4, 5]
if let firstSuchElement = elements.first(where: { $0 == 4 }) {
print(firstSuchElement) // 4
// ...
}
এই দ্বন্দ্বযুক্ত উদাহরণে, এর ব্যবহারটি নির্বোধ বলে মনে হতে পারে তবে কোনও শর্ত পূরণকারী কোনও উপাদানের অস্তিত্বের জন্য অ-মৌলিক উপাদান ধরণের অ্যারেগুলি অনুসন্ধান করা যদি এটি খুব কার্যকর হয়। যেমন
struct Person {
let age: Int
let name: String
init(_ age: Int, _ name: String) {
self.age = age
self.name = name
}
}
let persons = [Person(17, "Fred"), Person(16, "Susan"),
Person(19, "Hannah"), Person(18, "Sarah"),
Person(23, "Sam"), Person(18, "Jane")]
if let eligableDriver = persons.first(where: { $0.age >= 18 }) {
print("\(eligableDriver.name) can possibly drive the rental car in Sweden.")
// ...
} // Hannah can possibly drive the rental car in Sweden.
let daniel = Person(18, "Daniel")
if let sameAgeAsDaniel = persons.first(where: { $0.age == daniel.age }) {
print("\(sameAgeAsDaniel.name) is the same age as \(daniel.name).")
// ...
} // Sarah is the same age as Daniel.
যে কোনও শিকলযুক্ত ক্রিয়াকলাপ ব্যবহার করে .filter { ... some condition }.first
অনুকূলভাবে এটি প্রতিস্থাপন করা যেতে পারে first(where:)
। পরেরটি আরও ভাল উদ্দেশ্য দেখায় এবং সম্ভাব্য অ-অলস সরঞ্জামগুলির তুলনায় পারফরম্যান্স সুবিধা রয়েছে .filter
কারণ এগুলি ফিল্টারটি অতিক্রমকারী (সম্ভাব্য) প্রথম উপাদানটি বের করার পূর্বে সম্পূর্ণ অ্যারে পাস করবে।
অ্যারেতে কোনও উপাদান উপস্থিত রয়েছে কিনা তা পরীক্ষা করুন (কিছু মানদণ্ড পূরণ করছে) এবং যদি তা হয় তবে এই জাতীয় উপাদানটি প্রথম সরিয়ে দিন
প্রশ্নের নীচে একটি মন্তব্য:
firstSuchElement
অ্যারে থেকে আমি কীভাবে অপসারণ করতে পারি ?
উপরে বর্ণিত একটি অনুরূপ ব্যবহারের ক্ষেত্রে প্রথম উপাদানটিকে প্রদত্ত ভবিষ্যদ্বাণীকে পূরণ করে তা অপসারণ করা । এটি করার জন্য, index(where:)
পদ্ধতিটি Collection
(যা অ্যারে সংগ্রহের জন্য সহজেই উপলব্ধ) এর remove(at:)
পদ্ধতিটি প্রাক্টিক্যালটি পূরণকারী প্রথম উপাদানটির সূচক খুঁজে পেতে ব্যবহার করা যেতে পারে, তারপরে সূচকটি ব্যবহারের পদ্ধতিটির সাথে ব্যবহার করা যেতে পারে Array
(সম্ভাব্য; এটি উপস্থিত থাকা সত্ত্বেও ) যে উপাদান সরান।
var elements = ["a", "b", "c", "d", "e", "a", "b", "c"]
if let indexOfFirstSuchElement = elements.index(where: { $0 == "c" }) {
elements.remove(at: indexOfFirstSuchElement)
print(elements) // ["a", "b", "d", "e", "a", "b", "c"]
}
অথবা, যদি আপনি অ্যারে থেকে উপাদান মুছে ফেলার জন্য চাই এবং সঙ্গে কাজ আবেদন Optional
: S map(_:)
(জন্য শর্তসাপেক্ষে করতে পদ্ধতি .some(...)
থেকে ফেরত index(where:)
) থেকে ফলাফলের ব্যবহার index(where:)
(একটি ঐচ্ছিক বাঁধাই দফা মধ্যে) অ্যারে থেকে মুছে ফেলার জন্য এবং ক্যাপচার সরানো উপাদান ।
var elements = ["a", "b", "c", "d", "e", "a", "b", "c"]
if let firstSuchElement = elements.index(where: { $0 == "c" })
.map({ elements.remove(at: $0) }) {
// if we enter here, the first such element have now been
// remove from the array
print(elements) // ["a", "b", "d", "e", "a", "b", "c"]
// and we may work with it
print(firstSuchElement) // c
}
নোট করুন যে অ্যারে সদস্যদের উপরে সংক্ষিপ্ত উদাহরণে সাধারণ মান ধরণের ( String
উদাহরণ), সুতরাং কোনও প্রদত্ত সদস্যকে অনুসন্ধান করার জন্য একটি প্রাক্কলিত ব্যবহার করা কিছুটা বেশি মারাত্মক, কারণ আমরা কেবলমাত্র @ ডগকফির উত্তরেindex(of:)
দেখানো সহজ পদ্ধতিটি ব্যবহার করে সাম্যের জন্য পরীক্ষা করতে পারি might । Person
উদাহরণস্বরূপ উপরোক্ত অনুসন্ধান ও অপসারণের পদ্ধতির প্রয়োগ করা হলে , তবে index(where:)
একটি শিকারীর সাহায্যে ব্যবহার করা যথাযথ (যেহেতু আমরা আর সাম্যের জন্য পরীক্ষা করি না তবে সরবরাহকৃত ভবিষ্যদ্বাণী পূরণের জন্য)।
if find(elements, 5) != nil { }
যথেষ্ট ভাল না?