2011-12-14 15 views
5

क्या मुझे रनटाइम पर वर्तमान फ़ंक्शन का नाम मिल सकता है?एरलांग - रनटाइम पर वर्तमान फ़ंक्शन का नाम कैसे ढूंढें?

foo() -> 
    foo = find_function_name(). 

क्या मजेदार find_function_name/0 लिखना संभव है? आप यह कैसे करेंगे? क्या यह पहले से मौजूद है?

+5

के संभावित डुप्लिकेट [? कैसे एक समारोह के नाम पर प्राप्त करने के लिए] (http://stackoverflow.com/questions/4915339/how- टू-मिल-नाम-की-एक-समारोह) –

उत्तर

3

अधिक हल्के और भी स्टैकट्रेस प्रारूप है जो कभी कभी बदल सकते हैं पर निर्भर करता है नहीं, मैं नहीं बल्कि process_info/2 का उपयोग करेंगे:

{_, {Module, Function, Arity}} = process_info(self(), current_function) 

Function में आप एक परमाणु के रूप में समारोह नाम मिल जाएगा और आप Module मिल और Arity भी। आप इसे फ़ंक्शन के रूप में नहीं लिख सकते क्योंकि यह केवल इस फ़ंक्शन को वर्तमान के रूप में वापस कर देगा। मैक्रो कि आप परमाणु के रूप में वर्तमान समारोह नाम देता दिखाई दे सकता है जैसे:

-define(current_function_name(), 
      element(2, element(2, process_info(self(), current_function)))). 

foo() -> 
    foo = ?current_function_name(). 
संबंधित मुद्दे