खोज…


परिचय

Array और Dictionary जैसे विभिन्न संग्रह प्रकारों को संचालित करने के लिए map , flatMap , filter और reduce जैसे अग्रिम कार्यों का उपयोग किया जाता है। आम तौर पर अग्रिम कार्यों के लिए छोटे कोड की आवश्यकता होती है और एक संक्षिप्त तरीके से जटिल तर्क बनाने के लिए एक साथ जंजीर हो सकती है।

अग्रिम कार्यों के साथ परिचय

चलो बेहतर तरीके से अग्रिम फ़ंक्शन को समझने के लिए एक परिदृश्य लेते हैं,

struct User {
    var name: String
    var age: Int
    var country: String?
}

//User's information 
let user1 = User(name: "John", age: 24, country: "USA")
let user2 = User(name: "Chan", age: 20, country: nil)
let user3 = User(name: "Morgan", age: 30, country: nil)
let user4 = User(name: "Rachel", age: 20, country: "UK")
let user5 = User(name: "Katie", age: 23, country: "USA")
let user6 = User(name: "David", age: 35, country: "USA")
let user7 = User(name: "Bob",age: 22, country: nil)

//User's array list
let arrUser = [user1, user2, user3, user4, user5, user6, user7]

मानचित्र कार्य:

एक संग्रह पर पाश का उपयोग करें और संग्रह में प्रत्येक तत्व के लिए एक ही ऑपरेशन लागू करें। मैप फ़ंक्शन एक सरणी देता है जिसमें मैपिंग लागू करने या फ़ंक्शन को प्रत्येक आइटम में बदलने का परिणाम होता है।

//Fetch all the user's name from array 
let arrUserName = arrUser.map({ $0.name }) // ["John", "Chan", "Morgan", "Rachel", "Katie", "David", "Bob"]

फ़्लैट-मैप फ़ंक्शन:

सबसे सरल उपयोग के रूप में नाम संग्रह के एक संग्रह समतल करने के लिए सुझाव है।

// Fetch all user country name & ignore nil value.
let arrCountry = arrUser.flatMap({ $0.country }) // ["USA", "UK", "USA", "USA"]

फ़िल्टर समारोह:

एक संग्रह पर लूप के लिए फ़िल्टर का उपयोग करें और एक एरे को वापस करें जिसमें केवल वे तत्व शामिल हैं जो एक सम्मिलित स्थिति से मेल खाते हैं।

// Filtering USA user from the array user list.
let arrUSAUsers = arrUser.filter({ $0.country == "USA" }) // [user1, user5, user6]

// User chaining methods to fetch user's name who live in USA 
let arrUserList = arrUser.filter({ $0.country == "USA" }).map({ $0.name }) // ["John", "Katie", "David"]

कम करना:

एक नया मान बनाने के लिए सभी आइटमों को एक संग्रह में संयोजित करने के लिए कम करें।

स्विफ्ट 2.3: -

//Fetch user's total age.
let arrUserAge = arrUser.map({ $0.age }).reduce(0, combine: { $0 + $1 }) //174

//Prepare all user name string with seperated by comma 
let strUserName = arrUserName.reduce("", combine: { $0 == "" ? $1 : $0 + ", " + $1 }) // John, Chan, Morgan, Rachel, Katie, David, Bob

स्विफ्ट 3: -

//Fetch user's total age.
let arrUserAge = arrUser.map({ $0.age }).reduce(0, { $0 + $1 }) //174

//Prepare all user name string with seperated by comma 
let strUserName = arrUserName.reduce("", { $0 == "" ? $1 : $0 + ", " + $1 }) // John, Chan, Morgan, Rachel, Katie, David, Bob

सपाट बहुआयामी सरणी

एकल आयाम में बहुआयामी सरणी को समतल करने के लिए, फ्लैटपाइप अग्रिम फ़ंक्शन का उपयोग किया जाता है। अन्य उपयोग का मामला सरणी और मानचित्रण मूल्यों से शून्य मूल्य की उपेक्षा करना है। आइए उदाहरण के साथ देखें: -

मान लीजिए हमारे पास शहरों का एक बहुआयामी सरणी है और हम बढ़ते क्रम में शहर की नाम सूची को क्रमबद्ध करना चाहते हैं। उस स्थिति में हम फ्लैटपाइप फ़ंक्शन का उपयोग कर सकते हैं जैसे: -

let arrStateName = [["Alaska", "Iowa", "Missouri", "New Mexico"], ["New York", "Texas", "Washington", "Maryland"], ["New Jersey", "Virginia", "Florida", "Colorado"]]

बहुआयामी सरणी से एकल आयामी सूची तैयार करना,

let arrFlatStateList = arrStateName.flatMap({ $0 }) // ["Alaska", "Iowa", "Missouri", "New Mexico", "New York", "Texas", "Washington", "Maryland", "New Jersey", "Virginia", "Florida", "Colorado"]

सरणी मानों को सॉर्ट करने के लिए, हम चेनिंग ऑपरेशन या सॉर्ट फ्लैटन सरणी का उपयोग कर सकते हैं। नीचे उदाहरण में चेनिंग ऑपरेशन दिखाया गया है,

// Swift 2.3 syntax 
let arrSortedStateList = arrStateName.flatMap({ $0 }).sort(<) // ["Alaska",     "Colorado", "Florida", "Iowa", "Maryland", "Missouri", "New Jersey", "New Mexico", "New York", "Texas", "Virginia", "Washington"]

// Swift 3 syntax
let arrSortedStateList = arrStateName.flatMap({ $0 }).sorted(by: <) // ["Alaska", "Colorado", "Florida", "Iowa", "Maryland", "Missouri", "New Jersey", "New Mexico", "New York", "Texas", "Virginia", "Washington"]


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow