मैं जंग के बारे में एक किताब पढ़ रहा हूं, और Rust macros के साथ खेलना शुरू कर रहा हूं। सभी मेटाएरिएबल प्रकारों को समझाया गया है और पिछले एक को छोड़कर उदाहरण हैं - tt
। पुस्तक के अनुसार, यह एक "एक टोकन पेड़" है। मैं उत्सुक हूं, यह क्या है और इसके लिए क्या उपयोग किया जाता है? क्या आप एक उदाहरण प्रदान कर सकते हैं?जंग मैट्रोज़ में टीटी मेटाएरिएबल प्रकार का क्या अर्थ है?
उत्तर
यह सुनिश्चित करने के लिए एक धारणा है कि मैक्रो इनोकेशन में जो कुछ भी है, वह ()
, []
और {}
जोड़े से सही ढंग से मेल खाता है।
, निम्नलिखित कार्यक्रम के लिए:
fn main() {
println!("Hello world!");
}
टोकन पेड़ होगा:
fn
main
()
- ∅
{ println!("Hello world!"); }
println
!
("Hello world!")
"Hello world!"
;
यह एक पेड़ जहां सरल टोकन (fn
, main
आदि) पत्तियां हैं रूपों, और कुछ भी ()
, []
या {}
से घिरा हुआ एक सबट्री है। ध्यान दें कि (
टोकन पेड़ में अकेले दिखाई नहीं देता है: संबंधित )
से मेल खाने के बिना (
से मिलान करना संभव नहीं है।
उदाहरण के लिए:
macro_rules! {
(fn $name:ident $params:tt $body:tt) => { /* … */}
}
$name → main
, $params →()
, $body → { println!("Hello world!"); }
साथ ऊपर समारोह से मेल खाएगा।
टोकन पेड़ कम से कम मांग करने योग्य प्रकार है: यह कुछ भी मेल खाता है। यह अक्सर मैक्रोज़ में उपयोग किया जाता है, जिसमें "वास्तव में परवाह नहीं है" भाग होता है, और विशेष रूप से मैक्रोज़ में जिसमें "सिर" और "पूंछ" भाग होता है। उदाहरण के लिए println!
मैक्रोज़ में ($fmt:expr, $($arg:tt)*)
से मेल खाने वाली शाखा है जहां $fmt
प्रारूप स्ट्रिंग है, और $($arg:tt)*
का अर्थ है "बाकी सभी" और इसे format_args!
पर अग्रेषित किया गया है। जिसका अर्थ है कि println!
को वास्तविक प्रारूप जानने की आवश्यकता नहीं है और इसके साथ जटिल मिलान करना आवश्यक नहीं है।
- 1. टी 4 - टीटी - टीटी फाइलों में कस्टम कक्षाओं का उपयोग
- 2. पैरामीटरयुक्त प्रकार का क्या अर्थ है?
- 3. जंग के विकल्प प्रकार का ऊपरी भाग क्या है?
- 4. बूलियन के साथ जंग का प्रकार जांचें?
- 5. 'प्रकार की' प्रकार की घोषणा का अर्थ क्या है?
- 6. क्या जंग में पीओडी प्रकार की अवधारणा है?
- 7. हास्केल प्रकार हस्ताक्षर में कोष्ठक का अर्थ क्या है?
- 8. सी ++ में पैरामीटर प्रकार के साथ && का क्या अर्थ है?
- 9. एक मेवेन निर्भरता में "बंडल" प्रकार का अर्थ क्या है?
- 10. प्रकार कास्टिंग सरणियों/जंग
- 11. क्या जंग के लिए जंग में चर के प्रकार घोषित करना संभव है?
- 12. int.class का अर्थ क्या है
- 13. 'स्ट्रिंग ...' का क्या अर्थ है?
- 14. {} का क्या अर्थ है?
- 15. "===" का क्या अर्थ है?
- 16. पर्ल में @_ -1 का क्या अर्थ है?
- 17. मिर्थ में संदेश का क्या अर्थ है?
- 18. आईडी का अर्थ क्या है?
- 19. AVMediaTypeMuxed का क्या अर्थ है?
- 20. पर्ल में "~~" का क्या अर्थ है?
- 21. क्या जंग सामान्य प्रकार मिटा देता है या नहीं?
- 22. 8badf00d का क्या अर्थ है?
- 23. एसएएस में `.Z` का क्या अर्थ है?
- 24. हास्केल में इंस्टेंस का क्या अर्थ है?
- 25. "अपारदर्शी प्रकार" शब्द का अर्थ "CFBundleRef अपारदर्शी प्रकार" के संदर्भ में क्या है?
- 26. पायथन में "|" चिह्न का क्या अर्थ है?
- 27. सी में ईपीएस का क्या अर्थ है?
- 28. पर्ल में $ # सरणी का क्या अर्थ है?
- 29. PHP में "&" का अर्थ क्या है?
- 30. URL में gs_upl का क्या अर्थ है?
अच्छी व्याख्या और उदाहरण के लिए धन्यवाद, बस मुझे जो चाहिए! –