/ / स्कैला में टुपल्स से नक्शा बनाना - स्कैला, कार्यात्मक-प्रोग्रामिंग

स्कैला में टुपल्स से एक नक्शा बनाना - स्कैला, कार्यात्मक-प्रोग्रामिंग

मैं प्रोग्रामिंग भाषा के लिए नया हूं और मेरी किसी एक समस्या के लिए मदद की ज़रूरत है।

मुझे अनुक्रमों के दो tuple के बीच एक नक्शा बनाने की जरूरत है:

ए = tuple1 (tuple1 (tuple1 (x, y), z), ए)

बी = tuple2 (tuple2 (tuple2 (1,2), 3), 4)

अब मुझे नीचे की तरह कुछ चाहिए:

सी = ((एक्स, 1), (वाई, 2), (जेड, 3), (ए, 4)) और यदि मैं एक्स कहने के लिए खोज करता हूं तो मुझे 1 प्राप्त करने की आवश्यकता होती है;

ट्यूपल घटनाओं की संख्या अज्ञात है लेकिनदोनों tuple संरचना समान होगा। मैं स्टैक ओवरफ्लो में समान प्रकार के प्रश्नों के समाधान को समझ और मानचित्र नहीं कर सका। तो स्पष्टीकरण के साथ समाधान सहायक होगा

उत्तर:

उत्तर № 1 के लिए 1

मुझे लगता है कि यह (बदसूरत) चाल है।

def toMap(x: (Any,String), y: (Any,Int)): Map[String, Int] = {
@tailrec
def rec(x: (Any,String), y: (Any,Int), map: Map[String, Int]): Map[String, Int] =
x match {
case (a: String, b) =>
val (c: Int, d) = y
map ++ Map(a -> c, b -> d)
case (a: (Any,String), b) =>
val (c: (Any,Int), d) = y
rec(a, c, map ++ Map(b -> d))
}
rec(x, y, Map.empty[String, Int])
}

मान लीजिए कि आप इसे इस तरह उपयोग करना चाहते हैं:

scala> val a = ((("x","y"),"z"),"a")
a: (((String, String), String), String) = (((x,y),z),a)

scala> val b = (((1,2),3),4)
b: (((Int, Int), Int), Int) = (((1,2),3),4)

scala> toMap(a,b)
res1: Map[String,Int] = Map(a -> 4, z -> 3, x -> 1, y -> 2)