Erlang thực hiện các chức năng khác nhau để kiểm tra xem danh sách có phải là danh sách phẳng trong mô-đun io_lib hay không.
Một lựa chọn tốt để kiểm tra chuỗi IP particulary của bạn là io_lib: latin1_char_list (Term) http://erlang.org/doc/man/io_lib.html#latin1_char_list-1
io_lib: latin1_char_list/1 chức năng thực hiện là:
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.
Nếu bạn muốn kiểm tra cho unicode phẳng danh sách bạn có thể sử dụng io_lib: char_list (Thời hạn) http://erlang.org/doc/man/io_lib.html#char_list-1
io_lib: char_list/1 function implementation là:
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.
Kiểm tra tài liệu mô-đun io_lib cho các chức năng tương tự khác.
ý rằng nếu một số chức năng erlang mới bị thiếu từ dự án phiên bản erlang hỗ trợ hiện tại của bạn chỉ đơn giản là bạn có thể sao chép việc thực hiện các phiên bản erlang mới cung cấp và thêm chúng vào một module của riêng bạn. Tìm kiếm mã nguồn erlang/lib/*/src mới nhất và chỉ cần nhận các hàm mới mà bạn cần.
Nguồn
2017-04-07 22:37:44
Tôi đoán cách tốt nhất để làm điều này là tránh những tình huống như vậy. Ví dụ. sử dụng danh sách các phần tử ngay cả khi chỉ có một phần tử. Hoặc sử dụng tuples để biểu thị IP thay vì sử dụng chuỗi. Luôn luôn có một cách để tránh sự mơ hồ – gleber
gleber: Đồng ý, nhưng bây giờ tôi rất tiếc khi xử lý mã cũ mà tôi không thể giới thiệu loại thay đổi đó – Fylke