2012-09-07 16 views
5

मुझे लगता है कि मुझे लगता है कि एक काफी मूल यार्ड मैक्रो उपयोग था जहां मेरे पास कई कार्यों के बीच साझा किए गए कई विकल्पों के साथ हैश संरचना है। मैं बस इस जगह को इस संरचना को दोहराने के लिए रोकने के लिए एक मैक्रो का उपयोग करने की उम्मीद कर रहा था, लेकिन ऐसा लगता है कि ऐसा नहीं लगता है।ड्रॉइंग यार्ड पैरामीटर

क्या मैं काम करने की उम्मीद थी:

# @macro [new] my_hash 
# @param $1 [Hash,Array<Hash>] Inputted my_hash 
# @option $1 [String] :a Value for A. 
# @option $1 [String] :b Value for B. 
# @option $1 [String] :c Value for C. 

## 
# my_func does stuff 
# @macro my_hash h1 
def my_func h1 
end 

## 
# other_func does stuff 
# @macro my_hash h2 
def other_func h2, a, b 
end 

और h1 और h2 सही ढंग से दर्ज किया है। मुझे लगता है कि मुझे पता चला है कि कम से कम $ 1 ऐसा काम नहीं करता है बल्कि इसके बजाय फ़ंक्शन से ही लेता है लेकिन मैं दोनों पैरामीटर एच 1 को कॉल कर सकता हूं और मैक्रो में एच 1 के साथ $ 1 को प्रतिस्थापित कर सकता हूं और मुझे अभी भी वह नहीं मिलता है जो मैं चाहता हूं ।

http://rubydoc.info/docs/yard/file/docs/Tags.md#macro पर "सरल मैक्रोज़ परिभाषित करना" उदाहरण इंगित करेगा कि मैं यह कर सकता हूं (ध्यान दें कि मुझे @! मैक्रो और कुछ के बिना उदाहरण मिलते हैं लेकिन न ही काम करने लगते हैं)।

मुझे यार्ड के बारे में बहुत कुछ नहीं पता लेकिन क्या यह अभी काम नहीं करता है? क्या ऐसा कुछ ऐसा है जो मैं अपना परिणाम प्राप्त करने के लिए कर सकता हूं? क्या कोई डिबगिंग फ़ंक्शन है जो इसे समझाएगा क्योंकि यार्ड सर्वर कंसोल में कोई त्रुटि नहीं आती है?

धन्यवाद

+0

मुझे दस्तावेज को समझ में नहीं आता है, लेकिन एसओ सवाल [यार्डोक '@ मैक्रो 'के रजिस्टरों पर इटरेटिंग] (http://stackoverflow.com/questions/10343634/iterating-over-the-registers- ऑफ-ए-यार्डोक-मैक्रो) प्रासंगिक दिखता है। –

उत्तर

0

आप पहले से ही मैक्रो में निर्दिष्ट के रूप में है कि यह, विधि के पहले पैरामीटर के लिए विस्तार किया जाना चाहिए की तुलना में आप जब मैक्रो का विस्तार यह निर्दिष्ट करने की आवश्यकता नहीं है। यह भी कहना असंभव प्रतीत होता है कि मैक्रो का विस्तार करने के लिए कौन सा पैरामीटर है। एक और बात यह है कि आप इस मामले में [new] छोड़ सकते हैं और ऐसा लगता है कि @macro के बजाय @!macro का उपयोग करना बेहतर है।

# @!macro my_hash 
# @param $1 [Hash,Array<Hash>] Inputted my_hash 
# @option $1 [String] :a Value for A. 
# @option $1 [String] :b Value for B. 
# @option $1 [String] :c Value for C. 

## 
# my_func does stuff 
# @!macro my_hash 
def my_func h1 
end 

## 
# other_func does stuff 
# @!macro my_hash 
def other_func h2, a, b 
end 
+0

जो '@! मैक्रो 'और' मैक्रो 'के बीच का अंतर है, मैं इसे खोजने में सक्षम नहीं था। यदि आप चाहते हैं तो कृपया [मेरे प्रश्न] का उत्तर दें (http://stackoverflow.com/q/25039861/518204)। – Fabio

0

मेरा मानना ​​है कि आप पूरा कर सकते हैं आप गज की दूरी पर Reference Tags प्रयोग करने के लिए देख रहे हैं।

डॉक्स से:

एक टैग के डेटा (see OBJECT) साथ शुरू होता है यदि यह एक "संदर्भ टैग" माना जाता है। एक संदर्भ टैग निर्दिष्ट ओबीजेईसीटी से दिए गए टैग नाम से टैग डेटा को सचमुच प्रतिलिपि बनाता है। उदाहरण के लिए, एक विधि संदर्भ टैग सिंटैक्स का उपयोग किसी दिए गए ऑब्जेक्ट से सभी @param टैग कॉपी कर सकते हैं:

# @param [String] user the username for the operation 
# @param [String] host the host that this user is associated with 
# @param [Time] time the time that this operation took place 
def clean(user, host, time = Time.now) end 

# @param (see #clean) 
def activate(user, host, time = Time.now) end 
0

यह yardoc 0.9.8 (शायद कोई भी संस्करण) के साथ काम करता है:

# @!macro my_hash 
# @param $1 [Hash,Array<Hash>] Inputted my_hash 
# @option $1 [String] :a Value for A. 
# @option $1 [String] :b Value for B. 
# @option $1 [String] :c Value for C. 

## 
# my_func does stuff 
# @macro my_hash 
def my_func h1 
end 

## 
# other_func does stuff 
# @macro my_hash 
def other_func h2, a, b 
end 

गायब विस्मयादिबोधक चिह्न नोट करें! @macro के साथ मैक्रो को कॉल करते समय। यह सही yardoc syntax है।

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

  • कोई संबंधित समस्या नहीं^_^