Tôi mới sử dụng Erlang và có thể tôi vừa bỏ qua vấn đề này trong hướng dẫn mặc dù nó không quan trọng. Giả sử, tôi có một danh sách các cặp {Key, Value} nhận được từ erlang: fun_info/1. Tôi muốn biết tính năng chức năng, phần còn lại của danh sách không quan tâm đến tôi. Vì vậy, tôi viết một cái gì đó như:Tìm một giá trị trong danh sách {key, value} trong Erlang
find_value(_, []) ->
nothing;
find_value(Key, [{Key, Value} | _]) ->
Value;
find_value(Key, [_ | T]) ->
find_value(Key, T).
Và sau đó làm:
find_value(arity, erlang:fun_info(F)).
tôi hoạt động tốt, nhưng cái gì đó như find_value nên một thói quen quá phổ biến để viết nó? Tôi không thể tìm thấy 'tương tự trong BIF' mặc dù. Vì vậy, câu hỏi đặt ra là: nó có một cách tốt đẹp thanh lịch để có được một giá trị cho một khóa từ một danh sách các {key, value} tuple?
này sẽ rất tốt, nhưng tôi có một câu hỏi ngớ ngẩn sau đó: những gì là '=: ='? Tại sao '==' không mong muốn ở đây? – akalenuk
Xin chào! == có thể được sử dụng để so sánh các con số, để 1.0 bằng 1, nhưng trong các so sánh khác, bạn nên sử dụng toán tử so sánh "chính xác", đó là =: = (và sẽ tạo 1.0 khác với 1), xem: http://www.erlang.org/doc/reference_manual/expressions.html#id76768 – marcelog
Cách tiếp cận này là tốt cho Haskell lười biếng, nhưng trong Erlang nó sẽ phải đi qua toàn bộ 'List' trong mọi trường hợp trong khi' get_value/2' dừng lại khi nó tìm thấy trận đấu đầu tiên. –