2010-02-22 6 views
12

Điều tôi muốn là một cách để chuyển đối số vào các hàm giống như bản đồ băm ruby. Mặc dù có lẽ đây là một sự phù hợp xấu cho Erlang, tôi không chắc chắn chưaĐiều gì gần nhất trong Erlang để băm?

băm

Trong Ruby Tôi thường sử dụng như:

{ "a" => 100, "b" => 200}

: Điều gì gần nhất trong Erlang?

Cập nhật: Tôi đã kể từ khi mặt hàng này:

http://20bits.com/articles/erlang-an-introduction-to-records/

Đang sử dụng hồ sơ ứng viên tốt?

+3

Bạn nên tạo một thẻ cụ thể cho các câu hỏi của riêng bạn ... – Zed

+0

Lời khuyên tốt, cảm ơn Zed – Zubair

+2

Từ đọc câu trả lời của bạn cho câu trả lời bên dưới, tôi có thể an toàn nói rằng bạn đang phạm sai lầm khủng khiếp. Bạn muốn sử dụng một thành ngữ gọi hàm ruby ​​trong erlang bởi vì bạn không quen với các thành ngữ erlang ... đừng làm thế. Tìm hiểu ngôn ngữ bạn đang sử dụng. – Dustin

Trả lời

14

proplist s, dict s hoặc gb_tree s.

+1

nhà cung cấp dịch vụ có vẻ có cú pháp tương tự đẹp nhất. Cảm ơn Zed – Zubair

+1

proplists có thể tương tự như cú pháp, nhưng nó không phải là một băm. Thời gian tra cứu tuyến tính nhưng chèn liên tục mặc dù. Chỉnh sửa: Tôi nên đọc câu hỏi, bạn thực sự muốn cú pháp. =) – psyeugenic

+0

tra cứu tuyến tính có thể nhanh hơn cho các băm chỉ với một số ít phần tử ... – Zed

3

đây Bạn đang ở: dict - Key-Value Dictionary

bài Scriptum: Tôi có googled này trong vòng 30 vì vậy tôi nghĩ Bạn có thể tránh câu hỏi yêu cầu này ;-)

Edit: Để bảo vệ câu trả lời của tôi:

from_list (danh sách) -> Dict

loại:
Danh sách = [{Key, Value}]
Dict = dictionary()

Chức năng này chuyển danh sách danh sách khóa/giá trị thành từ điển.

Đây là báo giá từ liên kết của tôi. Vì vậy, bạn có thể tạo băm chính xác giống như khi bạn sử dụng các nhà tiên phong.

+0

Tôi đã làm google nó và không có gì từ xa tương tự cú pháp trong trang web bạn mô tả : {"a" => 100, "b" => 200} – Zubair

+3

Tôi nghĩ Bạn đang hỏi về tính tương tự về chức năng, không phải cú pháp, bởi vì tôi nghĩ vô lý là tìm cú pháp tương tự, chỉ để viết mã trông giống như trong ngôn ngữ khác. –

+0

Vâng, có lẽ bạn đã đúng. Nó chỉ là thường xuyên khi tôi nhìn vào các cuộc gọi chức năng erlang, thật khó để biết chính xác những gì mỗi tham số là cho, và tôi luôn luôn thích băm Ruby.Nhưng có, tôi có thể hỏi sai câu hỏi. Cảm ơn – Zubair

6

Bảng ETS và DETS là bảng băm thực sự không giống như một dict. DETS là để lưu trữ đĩa trong khi ETS có trong bộ nhớ. Chúng là những khối xây dựng cho cơ sở dữ liệu Mnesia.

+0

Nhưng ETS hoặc DETS có sử dụng bất kỳ mục đích nào để chuyển các tham số đến một hàm không? – Zubair

+0

Chắc chắn - nhưng tôi không chắc chắn ý của bạn là gì. Lưu ý, tuy nhiên, chúng không phải là cấu trúc bất biến, chúng không trả về một bản sao mới được sửa đổi sau khi 'đặt'. Vì vậy, chúng có thể nguy hiểm. Nhưng nếu bạn chắc chắn cần tốc độ của một băm và kích thước lớn, họ là con đường để đi. –

9

Erlang R17A sẽ bao gồm cấu trúc dữ liệu bản đồ.

+0

R17 đã hoạt động. Dưới đây là cách Hashmaps hoạt động trong http://langearms.github.io/2014/02/01/big-changes-to-erlang.html – gextra