2011-03-02 9 views
6

मैं toStr[list] कैसे बना सकता हूं जो प्रतीकों की एक सूची लेता है और उन्हें स्ट्रिंग के रूप में लौटाता है? मैं a=1;toStr[{a}] चाहते हैं देने के लिए {"a"}मूल्यांकन के बिना स्ट्रिंग्स में प्रतीकों को परिवर्तित करना

अद्यतन 02/03: लियो नुस्खा काम करता है, यह भी आप उपयोग कर सकते हैं एक संस्करण है जो सूची मैं SetAttribute[toStr2,HoldAll];toStr2[a__]:=toStr[{a}]

उत्तर

7

किया के बजाय एक दृश्य लेता है बनाने के लिए HoldForm:

a = 1; b = 2;[email protected][{a, b}] 

यह {a, b} देता है। आप Unevaluated इस्तेमाल कर सकते हैं

ClearAll[toStr]; SetAttributes[toStr, {HoldAll, Listable}]; 
toStr[x_] := [email protected][x]; 
a = 1; b = 2; toStr[{a, b}] 

वैकल्पिक रूप से,;: यह toStr समारोह में बनाने के लिए, आप इतना है कि यह बहस का मूल्यांकन नहीं करता है गुण निर्धारित करने की आवश्यकता उपरोक्त कोड toStr[x_] := [email protected][x] में भी काम करेगा।

+0

जो '{" a "," b "}' –

+0

की बजाय '{a, b}" 'देता है तो ऐसा करता है। ऐसा लगता है कि आप 'सूची योग्य' विशेषता को सेट करके भी बदल सकते हैं (उत्तर संपादित) –

+1

आप अयोग्य प्रतीक नाम निकालने के लिए 'SymbolName' का उपयोग भी कर सकते हैं (और संदर्भ प्राप्त करने के लिए 'संदर्भ')। – WReach

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

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