2017-01-04 12 views
5

यह एक जंक्शन में से कोई भी मान से मेल करने के जंक्शन का उपयोग करना संभव है? मैं किसी सरणी में किसी भी मान से मेल खाना चाहता हूं। ऐसा करने का सही तरीका क्या है?perl6 मिलान से मिलान में संभव है?

lisprog$ perl6 
To exit type 'exit' or '^D' 
> my @a=<a b c> 
[a b c] 
> any(@a) 
any(a, b, c) 
> my $x=any(@a) 
any(a, b, c) 
> my $y = "a 1" 
a 1 
> say $y ~~ m/ $x/
False 
> say $y ~~ m/ "$x"/
False 
> my $x = any(@a).Str 
any("a", "b", "c") 
> say $y ~~ m/ $x/
False 
> say $y ~~ m/ || $x/
False 
> say $y ~~ m/ || @a/
「a」 
> 

धन्यवाद !!

उत्तर

8

जंक्शनों regexes में अंतर्वेशित जा करने के लिए नहीं होती हैं।

my @a = <x y z>; 
say "y" eq any(@a); # any(False, True, False) 
say so "y" eq any(@a); # True 

एक regex में एक सरणी के मूल्यों में से किसी से मेल करने के लिए बस का नाम लिखें: वे विशेष रूप से तुलना ऑपरेटरों (जैसे eq) के साथ, सामान्य पर्ल 6 भाव में इस्तेमाल किया जा करने के लिए होती रहे रेगेक्स में सरणी चर (@ से शुरू)। डिफ़ॉल्ट रूप से, यह एक | प्रत्यावर्तन ("सबसे लंबे समय तक मैच") के रूप में व्याख्या की है, लेकिन आप यह भी है कि यह एक || प्रत्यावर्तन ("पहला मैच") होने के लिए निर्दिष्ट कर सकते हैं:

my @a = <foo bar barkeep>; 
say "barkeeper" ~~/@a /;  # 「barkeep」 
say "barkeeper" ~~/|| @a /; # 「bar」 
+0

धन्यवाद फिर से SMLS !! मुझे लगता है कि पर्ल 6 वास्तव में अच्छा है; मैं रैकेट के साथ perl6 के साथ चीजें तेजी से किया है। – lisprogtor

संबंधित मुद्दे