2017-06-09 12 views
6

इस कोड में @__FILE__ @__LINE__। मैं इसे fl.jl:4 | m प्रिंट कैसे कर सकता हूं?जूलिया मैक्रो:</p> <pre class="lang-julia prettyprint-override"><code>macro FL(message) return @sprintf("%s:%d | %s", @__FILE__, @__LINE__, message) # line 2 end println(@FL("m")) # line 4 </code></pre> <p>प्रिंट <code>fl.jl:2 | m</code>: मैक्रो

+0

हाय @ रॉल्फ, मैंने आपको मार्कडाउन में कोड स्वरूपित किया। कृपया यह सुनिश्चित करने के लिए समीक्षा करें कि अर्थ संरक्षित है, बशर्ते कि लाइन नंबर यहां महत्वपूर्ण हैं। – phg

+1

@phg जुलिआ '#' अंक में टिप्पणी की शुरुआत, // '' नहीं। मेरा सुझाव है कि आप भाषा को जानने वाले लोगों को सुधार कोड छोड़ दें - हालांकि मुझे सराहना है कि आपने पूछताछ के लिए कोई टिप्पणी छोड़ दी है। –

+0

@ लिंडन व्हाइट मैं जूलिया को जानता हूं। मैं बस कई अन्य भाषाओं में भी प्रोग्राम करता हूं;) सुधार के लिए धन्यवाद! – phg

उत्तर

3

हालांकि यह करने के लिए और अधिक सुरुचिपूर्ण तरीके हो सकता है, अगर आप इस अन्य मोर्चों पर अपनी प्रगति को ब्लॉक करने के लिए नहीं करना चाहते, क्यों बस लाइन संख्या मैक्रो को पारित नहीं ...

macro FL(message, line) 
    return @sprintf("%s:%d | %s", @__FILE__, line, message) 
end 
println(@FL("m", @__LINE__)) 
+0

आपके उत्तर के लिए धन्यवाद। बेशक यह एक समाधान है। लेकिन मैं इससे बचना चाहता हूं, खासकर क्योंकि मैं @__FILE__ जोड़ना चाहता हूं। –

+0

फिर आप एक तर्क के रूप में '@__ FILE__' भी जोड़ सकते हैं। – houtanb

4

निम्नलिखित वर्तमान जूलिया रात में काम करेंगे:

macro FL(message) 
    return :(@sprintf("%s:%d | %s", $(string(__source__.file)), $(__source__.line), $(esc(message)))) # line 2 
end 
println(@FL("m")) # line 4 

यह निम्न implementation pull request द्वारा ही संभव बनाया गया था। दुर्भाग्यवश, आधिकारिक रूप से जारी संस्करण में यह संभव नहीं है।

+0

उत्तर के लिए धन्यवाद। दुर्भाग्य से मुझे जूलिया नजदीक नहीं चल रहा है। मुझे मिलता है: कमांडलाइन त्रुटि: विकल्प 'सहायता-सूची' एक से अधिक बार पंजीकृत! एलएलवीएम त्रुटि: पंजीकृत कमांडलाइन विकल्पों में असंगतता। मैं इसे समझने की कोशिश करूंगा। –

+0

यह एक ही प्रक्रिया में लोड किए गए एकाधिक एलएलवीएम संस्करणों के कारण है। आईआईआरसी के बारे में जूलिया बेस और ओपनसीएल.जेएल में खुले मुद्दे हैं (सुनिश्चित नहीं है कि कोई संकल्प)। –

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