मेरे पास 2 डी सरणी प्रकार बूलियन (महत्वपूर्ण नहीं) गैर-कार्यात्मक शैली में सरणी पर पुनरावृत्ति करना आसान है। इसे एफपी शैली कैसे करें?2 डी स्कैला सरणी पुनरावृत्ति
var matrix = Array.ofDim[Boolean](5, 5)
पूर्व के लिए, मैं किसी दिए गए स्तंभ के लिए सभी पंक्तियों के माध्यम से पुनरावृति और है कि एक विशेष समारोह से मेल खाएंगे पूर्णांक की एक सूची प्रदान करना चाहते हैं। उदाहरण: कॉलम 3 के लिए, पंक्तियों 1 से 5 के माध्यम से 4, 5 लौटने के लिए पुनरावृत्त करें, यदि सेल (4, 3), (5, 3) पर एक विशिष्ट फ़ंक्शन से मेल खाता है। Thx वी
def getChildren(nodeId: Int) : List[Int] = {
info("getChildren("+nodeId+")")
var list = List[Int]()
val nodeIndex = id2indexMap(nodeId)
for (rowIndex <- 0 until matrix.size) {
val elem = matrix(rowIndex)(nodeIndex)
if (elem) {
println("Row Index = " + rowIndex)
list = rowIndex :: list
}
}
list
}
मुझे लगता है कि प्रारंभिक संरचना 2 डी सरणी है तो आपका सोल एक सरणी वापस कर देगा? – jts
आह, एक और अंतर यह है कि मैं सीधे 2 डी सरणी पर फ़िल्टर करने के बारे में सोच रहा था, लेकिन ऐसा करके, मैं पंक्ति सूचकांक खो रहा हूं: वैल बच्चे = मैट्रिक्स।फ़िल्टर (पंक्ति => पंक्ति (नोडइंडेक्स)) जो 2 1 डी सरणी देता है - लेकिन मुझे नहीं पता कि कौन सा – jts
वास्तव में नहीं, जिस संरचना पर मैं फिटिंग कर रहा हूं वह एक रेंज है, न कि ऐरे (क्योंकि यह इंडेक्स था जो आप चाहते थे उत्पादन)। परिणाम प्रकार एक इंडेक्सडैक [Int] है, और यह एक वेक्टर होता है। बस अगर आप एक सूची चाहते हैं, तो सूची करें, लेकिन वेक्टर आमतौर पर सूची की तुलना में बेहतर संरचना है। –