मैं एक बंद मैं का उपयोग कर स्विफ्ट Array.map समारोहस्विफ्ट Array.map बंद मुद्दा
मैं मूल रूप से एक सरणी ले रहा हूँ और उसके तत्वों को बंद करने का उपयोग कर के सभी remapping लिखा था पर सुधार करना चाहते हैं।
// Here's the array:
var numbersArray = [1, 2, 3, 4, 5]
// Here's the closure - it takes whatever number is passed into it and
// multiplies it by 2.0
var multiplier = { (currentNum: Int) -> Double in
let result = Double(currentNum) * 2.0
return result
}
// And here's how I'm calling it:
var newArray = numbersArray.map(multiplier)
और यह पूरी तरह से काम करता है।
लेकिन अगर मैं 2.1 से सबकुछ गुणा करना चाहता हूं तो क्या होगा? या 3.5? या कोई मूल्य? दूसरे शब्दों में, अगर मैं उस राशि को गुणा करना चाहता हूं जो मैं गुणा करता हूं तो परिवर्तनीय भी हो सकता है? और इसे दूसरे तर्क के रूप में बंद कर दिया गया है?
मैं इस तरह तर्क सूची में जोड़कर की कोशिश की:
var multiplier = { (currentNum: Int, factor: Double) -> Double in
let result = Double(currentNum) * factor
return result
}
और फिर इस के लिए मेरे कॉल बदल रहा:
var newArray = numbersArray.map(multiplier, 3.5)
लेकिन मैं त्रुटियों के सभी प्रकार के हो रही है (और मैंने कोशिश की इस पाठ्यक्रम पर सभी तरह के बदलाव।)
मैं क्या गलत कर रहा हूं?
बहुत बुरा-गधा है कि: -) बहुत चालाक। क्या यह ऐसा करने का एकमात्र तरीका है? – sirab333
यह एकमात्र तरीका है जिसे मैं कम से कम सोच सकता हूं। मैं वास्तव में कार्यात्मक प्रोग्रामिंग का मास्टर नहीं हूं हालांकि – connor
पर्याप्त मेला है। भले ही यह ऐसा करने का एकमात्र या "सर्वश्रेष्ठ" तरीका न हो, यह निश्चित रूप से बहुत अच्छा है। मैं आपको सही उत्तर के लिए क्रेडिट करूंगा। चीयर्स :-) – sirab333