Elm में टपल दो या तीन वैल्यू रख सकते हैं, और हर वैल्यू किसी भी टाइप की हो सकती है। Elm में टपल का इस्तेमाल ज़्यादातर साधारण और अस्थायी टाइप के लिए किया जाता है। इसी वजह से टपल में सबसे ज़्यादा 3 वैल्यू ही हो सकती हैं, और इसे और बढ़ावा देने के लिए सुविधाजनक फंक्शन सिर्फ 2 वैल्यू के लिए ही दिए गए हैं। ज़्यादा जटिल डेटा के लिए रिकॉर्ड इस्तेमाल करना ही बेहतर है।
type alias IntStringTuple = (Int, String)
aTuple : IntStringTuple
aTuple = (123, "elements can be of differing types")
anotherTuple : (String, String)
anotherTuple = Tuple.pair "this time it's" "two strings"
--> ("this time it's", "two strings")
Tuple.first aTuple
--> 123
Tuple.second aTuple
--> "elements can be of differing types"
बाइंडिंग में टपल पैटर्न मैचिंग की मदद से टपल को अलग-अलग हिस्सों में बाँटा जा सकता है। यह बाँटने का काम let एक्सप्रेशन, फंक्शन की घोषणाओं और case स्टेटमेंट में किया जा सकता है।
repeatString : (Int, String) -> Bool
repeatString aTuple =
let
(aNumber, aString) = aTuple
in
String.repeat aNumber aString
repeatStringAgain : (Int, String) -> Bool
repeatStringAgain (aNumber, aString) = String.repeat aNumber aString
has123 : (Int, String, Bool) -> Bool
has123 aTuple =
case aTuple of
(123, _, _) ->
True
(_, "123", _) ->
True
(_, _, True) ->
True
_ ->
False
Aazra और Rui समुद्री डाकुओं की थीम पर एक खज़ाने की खोज तैयार कर रहे हैं। यहाँ दो सूचियाँ हैं: एक में खज़ाने और नक्शे पर उनकी लोकेशन, और दूसरी में जगहों के नाम और उनकी लोकेशन।
| खज़ाना | लोकेशन |
|---|---|
| Amethyst Octopus | (1, F) |
| Angry Monkey Figurine | (5, B) |
| Antique Glass Fishnet Float | (3, D) |
| Brass Spyglass | (4, B) |
| Carved Wooden Elephant | (8, C) |
| Crystal Crab | (6, A) |
| Glass Starfish | (6, D) |
| Model Ship in Large Bottle | (8, A) |
| Pirate Flag | (7, F) |
| Robot Parrot | (1, C) |
| Scrimshaw Whale's Tooth | (1, F) |
| Silver Seahorse | (4, E) |
| Vintage Pirate Hat | (7, E) |
| जगह का नाम | लोकेशन | चतुर्थांश |
|---|---|---|
| Seaside Cottages | (C, 1) | Blue |
| Aqua Lagoon (Island of Mystery) | (F, 1) | Yellow |
| Deserted Docks | (A, 2) | Blue |
| Spiky Rocks | (D, 3) | Yellow |
| Abandoned Lighthouse | (B, 4) | Blue |
| Hidden Spring (Island of Mystery) | (E, 4) | Yellow |
| Stormy Breakwater | (B, 5) | Purple |
| Old Schooner | (A, 6) | Purple |
| Tangled Seaweed Patch | (D, 6) | Orange |
| Quiet Inlet (Island of Mystery) | (E, 7) | Orange |
| Windswept Hilltop (Island of Mystery) | (F, 7) | Orange |
| Harbor Managers Office | (A, 8) | Purple |
| Foggy Seacave | (C, 8) | Purple |
खिलाड़ी नक्शे पर घूमते हुए रास्ते में खज़ाने इकट्ठा करते जाएँगे। खज़ानों और जगहों की लोकेशन अलग-अलग ढंग से लिखी गई हैं, ताकि चुनौती थोड़ी और बढ़ जाए। कुछ खास जगहें भी हैं, जहाँ कुछ खज़ानों को कुछ और खज़ानों से बदला जा सकता है, ताकि खेल में एक और मोड़ आ जाए। आपको उनके खेल में मदद करने के लिए कुछ फंक्शन लिखने हैं।
placeLocationToTreasureLocation फंक्शन बनाइए, जो एक जगह की लोकेशन (जैसे ('C', 1)) लेता है और उसे खज़ाने की लोकेशन (जैसे (1, 'C')) में बदल देता है।
placeLocationToTreasureLocation ('C', 1)
--> (1,'C')
treasureLocationMatchesPlaceLocation फंक्शन बनाइए, जो एक PlaceLocation (जैसे ('C', 1)) लेता है और अगर वह किसी TreasureLocation (जैसे (1, 'C')) से मेल खाता है, तो सही लौटाता है।
treasureLocationMatchesPlaceLocation ('C', 1) (1, 'C')
--> true
treasureLocationMatchesPlaceLocation ('C', 1) (2, 'C')
--> false
countPlaceTreasures फंक्शन बनाइए। यह एक जगह (जैसे ("Aqua Lagoon (Island of Mystery)", ('F', 1))) और खज़ानों की सूची लेता है, और उन खज़ानों की संख्या लौटाता है जो वहाँ मिल सकते हैं।
place = ("Aqua Lagoon (Island of Mystery)", ('F', 1))
countPlaceTreasures place treasures =
--> 2
specialCaseSwapPossible फंक्शन बनाइए। यह एक खज़ाना (जैसे ("Amethyst Octopus", (1, 'F'))) और एक जगह (जैसे ("Seaside Cottages ", ('C', 1))) लेता है, और नीचे दिए गए जोड़ों के लिए सही लौटाता है:
इस फंक्शन को if स्टेटमेंट इस्तेमाल करने के बजाय एक case स्टेटमेंट और मौके पर ही बनाए गए एक टपल से लिखने की कोशिश कीजिए (Elm में यह एक आम तरीका है)।
Exercism पर साइन अप कीजिए और Elm को 28 कॉन्सेप्ट110 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।