मेरे पास दो-तत्व सूचियों की एक सूची है, जैसे कि आपको (1..5) Z (20..24) द्वारा उदाहरण के लिए क्या मिलेगा, जिसे मैं हैश बनाना चाहता हूं (इस उदाहरण में, आपको {1 => 20, 2 => 21, 3 => 22, 4 => 23, 5 =>24} से क्या मिलता है। मैं कर सकता था इसे "हाथ से" करें, लेकिन यह बहुत सुंदर नहीं है, और मुझे यकीन है कि राकू के पास इसे करने का एक मुहावरेदार तरीका है। मैं जिस सुरुचिपूर्ण विकल्प के साथ आया हूं वह है:

my @a = (1..5) Z (20..24);
my %a;
for @a -> @x {
   %a{@x[0]} = @x[1];
9
vonbrand 28 मार्च 2020, 23:41

1 उत्तर

सबसे बढ़िया उत्तर
my %h = (1..5) Z=> (20..24);
say %h;  # {1 => 20, 2 => 21, 3 => 22, 4 => 23, 5 => 24}

Z मेटा-ऑपरेटर अपने नाम के हिस्से के रूप में एक ऑपरेटर लेता है, और यह डिफ़ॉल्ट रूप से , पर डिफॉल्ट करता है, इस प्रकार डिफ़ॉल्ट रूप से सूचियां बनाता है। यदि आप Pair कंस्ट्रक्टर (उर्फ फैट-कॉमा) जोड़ते हैं, तो आप Pairs की एक सूची बनाते हैं, जिसे आप एक Hash में फीड कर सकते हैं।

एक वैकल्पिक समाधान flatZ का परिणाम होगा:

my %h = flat (1..5) Z (20..24);
12
Elizabeth Mattijsen 28 मार्च 2020, 21:22