एक unary +
int32
प्रकार के लिए एक निहित कलाकार के रूप में काम करता है।
पार्सर बस दाएं हाथ की ओर एक पूर्णांक में मूल्य को बदलने की कोशिश करेगा।
+'A'['']
के "tokenize" उस बयान की कोशिश करते हैं:
के देखो (और के माध्यम से कदम) अपने बयान, बहुत पार्सर चाहेंगे
+ 'A' [ '' ]
^^^^^
| | | | |
| | | | Array index close operator
| | | Empty string
| | Array index open operator
| Literal string of length 1 with value A
Unary + operator
आदेश है कि क्या पता करने के लिए हम +
ऑपरेटर लागू कर सकते हैं, हमें दाएं हाथ के तर्क का मूल्यांकन करने की आवश्यकता होगी:
'A'['']
एकमात्र तरीका हम एक स्ट्रिंग (जैसे कि 'A'
) में अनुक्रमित कर सकते हैं, इसे char[]
के रूप में इलाज कर रहा है, और [
और ]
ऑपरेटर के बीच एक पूर्णांक मूल्य प्रदान कर रहा है। एक खाली स्ट्रिंग अपने आप में एक पूर्णांक नहीं है, लेकिन जब पूर्ण रूप से एक में परिवर्तित हो जाती है, तो यह 0
बन जाती है (कार्रवाई में देखने के लिए शक्तियों में [int]""
या '' -as [int]
आज़माएं)। अब बयान अधिक इस तरह दिखता है:
'A'[0]
सूचकांक 0
में यह स्पष्ट रूप से char
A
है, और इतना है कि अब हमारे दाएँ हाथ के तर्क, चरित्र अपरकेस ए
अब हम एकल +
लागू है और voila, हम चार A
के लिए संबंधित ASCII मान प्राप्त करते हैं, जो 65
होता है।
हम इसी तरह से किया जा सकता था किया है:
+("A" -as [char])
या, Briantist के उदाहरण का उपयोग करते हुए:
"A" -as [char] -as [int]
क्या तुमने कभी आश्चर्य है कि कैसे पार्सर व्यक्ति टोकन में एक निश्चित बयान विभाजन हैं, का उपयोग करें [PSParser]::Tokenize()
विधि:
PS C:\> $errors = @()
PS C:\> $script = "+'A'['']"
PS C:\> $tokens = [System.Management.Automation.PSParser]::Tokenize($script,[ref]$errors)
PS C:\> $tokens | select Content, Type
Content Type
------- ----
+ Operator
A String
[ Operator
String
] Operator
टोकनिज पर हैंडी टिप; धन्यवाद! –