एरलांग मॉड्यूल io_lib में एक सूची सूची में एक फ्लैट सूची है या नहीं, यह जांचने के लिए विभिन्न कार्यों को लागू करता है।
अपने खासकर आईपी तार की जाँच के लिए एक अच्छा विकल्प io_lib है: latin1_char_list (टर्म) http://erlang.org/doc/man/io_lib.html#latin1_char_list-1
io_lib: latin1_char_list/1 समारोह दिया गया है:
latin1_char_list([C|Cs]) when is_integer(C), C >= $\000, C =< $\377 ->
latin1_char_list(Cs);
latin1_char_list([]) -> true;
latin1_char_list(_) -> false.
आप फ्लैट यूनिकोड के लिए परीक्षण करना चाहते हैं सूचियों आप io_lib उपयोग कर सकते हैं: char_list (टर्म) http://erlang.org/doc/man/io_lib.html#char_list-1
io_lib: char_list/1 समारोह कार्यान्वयन है:
char_list([C|Cs]) when is_integer(C), C >= 0, C < 16#D800;
is_integer(C), C > 16#DFFF, C < 16#FFFE;
is_integer(C), C > 16#FFFF, C =< 16#10FFFF ->
char_list(Cs);
char_list([]) -> true;
char_list(_) -> false.
अन्य समान कार्यों के लिए io_lib मॉड्यूल दस्तावेज़ देखें।
सूचना है कि कुछ नए erlang समारोह अपने वर्तमान परियोजना का समर्थन किया erlang संस्करण से याद कर रहे हैं अगर आप बस कार्यान्वयन नई erlang संस्करण प्रदान करता है उन्हें कॉपी करके अपने खुद की एक मॉड्यूल में जोड़ सकते हैं। नवीनतम erlang/lib/*/src स्रोत कोड खोजें और बस आपको आवश्यक नए फ़ंक्शंस प्राप्त करें।
स्रोत
2017-04-07 22:37:44
मुझे लगता है कि ऐसा करने का सबसे अच्छा तरीका ऐसी स्थितियों से बचने के लिए है। जैसे तत्वों की एक सूची का उपयोग करें भले ही केवल एक ही हो। या तारों का उपयोग करने के बजाय आईपी को इंगित करने के लिए tuples का उपयोग करें। अस्पष्टता से बचने के लिए हमेशा एक तरीका है – gleber
gleber: सहमत है, लेकिन अब मैं दुर्भाग्य से विरासत कोड से निपट रहा हूं जहां मैं उस तरह के परिवर्तन को पेश नहीं कर सकता – Fylke