PowerShell में, यह कुछ भी क्यों नहीं लौटाता है:

PS > $y = "$prid?api"
PS > echo $y

लेकिन ये बेहतर काम करते हैं:

PS > $y = "$prid\?api"
PS > echo $y
18\?api
PS > $y = "${prid}?api"
PS > echo $y
18?api
1
twasbrillig 6 फरवरी 2021, 02:23
3
 – 
Daniel
6 फरवरी 2021, 02:30
यदि आप रुचि रखते हैं: मैंने v7.1+ शून्य-सशर्त ऑपरेटर, (?. और ?[...]) के बारे में जानकारी जोड़ दी है, जो की अनुमति के साथ संघर्ष करता है {...} के बिना एक चर नाम के हिस्से के रूप में ? के उपयोग की अनुमति।
 – 
mklement0
6 फरवरी 2021, 03:02

1 उत्तर

सबसे बढ़िया उत्तर

हैरानी की बात है, ? का उपयोग PowerShell चर नाम में किया जा सकता है इस आवश्यकता के बिना कि नाम {...} में संलग्न हो।

इसलिए, PowerShell के विस्तार योग्य स्ट्रिंग्स ("..." स्ट्रिंग्स के अंदर स्ट्रिंग इंटरपोलेशन) के नियमों के आधार पर, "$prid?api" पूर्ववर्ती पहचानकर्ता को परोक्ष रूप से समाप्त करने के लिए ? पर विचार करने के बजाय शब्दशः नाम prid?api के साथ एक चर की तलाश करता है।

यानी, आप वास्तव में prid?api नाम के एक वैरिएबल को परिभाषित और संदर्भित कर सकते हैं:

PS> $prid?api = 'hi'; $prid?api
hi

यह आश्चर्यजनक अनुमति वास्तव में हाल ही में पेश की गई भाषा सुविधा, अशक्त-सशर्त पहुंच के रास्ते में आती है, जिसे पावरशेल (कोर) 7.1 में पेश किया गया है:

# v7.1+; note that the {...} around the name is - unexpectedly - *required*.
${variableThatMayBeNull}?.Foo()

GitHub मुद्दा #14025 इसमें {...} का उपयोग करने की आवश्यकता को समाप्त करने की वकालत करता है मामला।

5
mklement0 6 फरवरी 2021, 02:50