2010-02-27 4 views

उत्तर

7

आप Erlang R16B के साथ शुरू shell:strings/1 function साथ इस तरह के व्यवहार को निष्क्रिय कर सकते हैं।

बस इतना ध्यान रखें कि यह विकल्प वैश्विक सभी नोड के गोले के लिए है, और यह इसे वापस स्थापित करने के लिए के बाद खेल खत्म लंबे समय तक रहने वाले नोड्स में खोल है बुद्धिमान हो सकता है।

19

मुझे नहीं पता कि खोल के डिफ़ॉल्ट व्यवहार को बदलना संभव है, लेकिन आप io:format का उपयोग करके कम से कम अपने आउटपुट को प्रारूपित कर सकते हैं।

यहाँ एक उदाहरण है:

1> io:format("~p~n", [[65, 66, 67]]). 
"ABC" 
ok 
2> io:format("~w~n", [[65, 66, 67]]). 
[65,66,67] 
ok 

और चूंकि खोल ही प्रयोग/रखरखाव के लिए है, io:format() कम से कम अपने वास्तविक आवेदन के लिए पर्याप्त होना चाहिए। शायद आपको अपना प्रारूप/प्रिंट विधि लिखने पर भी विचार करना चाहिए, उदा। formatPerson() या ऐसा कुछ, जो सब कुछ अच्छी तरह से स्वरूपित करता है।

+0

मैं कब बारे में पता है: प्रारूप और शायद प्रश्न में यह उल्लेख किया जाना चाहिए था :) –

+0

यह मैं जब मैं एक स्ट्रिंग के रूप में पूर्णांकों की एक सूची मुद्रित करने के लिए की जरूरत के लिए वास्तव में क्या देख रहा था है। धन्यवाद! – Matt

0

समस्या यह है कि स्ट्रिंग Erlang में एक प्रकार नहीं है। एक स्ट्रिंग केवल पूर्णांक की एक सूची है, इसलिए शेल के लिए एक सामान्य सूची से प्रिंट करने योग्य स्ट्रिंग को अलग करने का कोई तरीका नहीं है। पता नहीं है कि यह आपके प्रश्न का उत्तर है या नहीं।

+0

डाल कर देखें '[65,66,67] .' और' [1,2,3] .' अपने खोल ... – Zed

+0

@Zed रहे हैं: मुझे लगता है कि के बारे में पता था। लेकिन मुझे लगता है कि मैंने इस सवाल को गलत समझा है। अब मुझे वह मिल गया जो वह करने की कोशिश कर रहा है। धन्यवाद। –

7

मैं खोल में मेरी सूची में एक परमाणु prepending द्वारा यह करने के लिए करते हैं।

उदाहरण के लिए

:

Eshell V5.7.4 (abort with ^G) 
1> [65,66,67]. 
"ABC" 
2> [a|[65,66,67]]. 
[a,65,66,67] 

भी हो सकता है [एक, 65,66,67], बिल्कुल। लेकिन [a | fun_that_returns_a_list()] "सही चीज़ (आईएसएच) ज्यादातर समय प्रिंट करेगा"

2

नहीं, इसे अक्षम करने का कोई तरीका नहीं है। मुझे लगता है कि सबसे अच्छा विकल्प या तो क्वेरी में मान को स्पष्ट रूप से मुद्रित करना है (io:format के साथ) या तथ्य के बाद: io:format("~w\n", [v(-1)])

1

मुझे नहीं लगता कि आप इसे रोका जा सकता है है। परमाणु तैयार करना एक क्लज की तरह लगता है - यह आपकी मूल स्ट्रिंग को बदल देता है।

मैं आम तौर पर सूचियों का उपयोग: (स्ट्रिंग) समतल यह एक स्ट्रिंग के लिए मजबूर करने के लिए - विशेष रूप से io_lib की returnvalue: प्रारूप() हमेशा एक स्ट्रिंग के रूप में मुद्रित नहीं करता है। सूचियों का उपयोग करना: इस पर flatten() इसे बनाता है।

मैं निम्नलिखित "सी शैली" का उपयोग करें:

sprintf(Format) -> 
    sprintf(Format, []). 
sprintf(Format, Args) -> 
    lists:flatten(io_lib:format(Format, Args)). 
5

As of Erlang/OTP R16B, तो आप इस चालू या बंद समारोह shell:strings/1 उपयोग कर सकते हैं। नोट यह भी चीजें हैं जो वास्तव में तार के लिए हैं, के मुद्रण निम्न उदाहरण में "foo" जैसे प्रभावित करता है:

1> {[8,9,10], "foo"}. 
{"\b\t\n","foo"} 
2> shell:strings(false). 
true 
3> {[8,9,10], "foo"}. 
{[8,9,10],[102,111,111]} 
संबंधित मुद्दे