2010-02-22 7 views
12

내가 원했던 것은 인수를 루비 해시 맵과 유사한 함수에 전달하는 방법이었습니다. 어쩌면이 얼랑에 대한 나쁜 적합이지만, 잘 모르겠어요 아직 같은Erlang에서 해시에 가장 가까운 것은 무엇입니까?

루비에서 내가 자주 사용하는 해시 :

{ "A"=> 100, "B"=> 200}

: 얼랑에서 가장 가까운 것은 무엇입니까?

업데이트 : 내가 있기 때문에 발견이 :

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

하는 기록에게 좋은 후보를 사용? 여기

+3

자신의 질문에 맞는 특정 태그를 만들어야합니다 ... – Zed

+0

좋은 조언, 감사합니다. Zed – Zubair

+2

아래 답변에 대한 귀하의 답변을 읽으면서, 나는 끔찍한 실수를 저지르고 있다고 말할 수 있습니다. 당신은 erlang에 익숙하지 않기 때문에 erlang에서 루비 함수 호출 관용구를 사용하고 싶다. 그러지 마라. 사용중인 언어를 배우십시오. – Dustin

답변

14

proplists, dicts 또는 gb_trees이다.

+1

프로 프리스트가 가장 유사한 구문을 갖고있는 것 같습니다. 감사합니다. Zed – Zubair

+1

프리리스트의 구문은 비슷할 수 있지만 해시가 아닙니다. 선형 검색 시간이지만 상수 삽입. 편집 : 나는 질문을 읽어야한다, 당신은 정말로 구문을 원했다. =) – psyeugenic

+0

선형 조회는 소수의 요소 만 가진 해시의 경우 더 빠릅니다. – Zed

3

당신은 다음과 같습니다 dict - Key-Value Dictionary

포스트 scriptum : 나는 30 대에서이 검색 좀 그래서 나는 당신이 묻는 질문 ;-)

편집 피할 수 있다고 생각 :

: 내 대답을 방어하기를

from_list (목록) -> DICT

유형 :
목록 = [{키, 값}]
Dict = dictionary()

이 함수는 키/값 목록 List를 사전으로 변환합니다.

이것은 내 링크의 인용문입니다. 따라서 자습서를 사용할 때와 동일한 방법으로 해시를 만들 수 있습니다.

+0

Google에 설명했는데 설명 된 웹 페이지에 원격으로 구문 적으로 비슷한 것이 없습니다. : { "a"=> 100, "b"=> 200} – Zubair

+3

나는 구문이 아닌 기능적 유사성에 대해 물어 보았다. 우스운 말은 비슷한 구문을 검색하는 것인데, 다른 언어에서도 마찬가지입니다. –

+0

예, 아마도 맞을 것입니다. 그것은 종종 erlang 함수 호출을 볼 때, 각 매개 변수가 무엇인지를 정확히 알지 못하기 때문에 루비 해시를 항상 좋아했습니다.하지만 네, 아마도 잘못된 질문을하고 있습니다. 감사합니다 – Zubair

6

ETS 및 DETS 테이블은 dict와 달리 true 해시 테이블입니다. DETS는 ETS가 메모리에있는 동안 디스크 저장 장치 용입니다. 그들은 Mnesia 데이터베이스의 구성 요소입니다.

+0

그러나 매개 변수를 함수로 전달하는 데 ETS 또는 DETS가 사용됩니까? – Zubair

+0

물론 - 무슨 뜻인지 잘 모르겠습니다. 그러나, 그것들은 변경 불가능한 구조는 아니며, 'put'후에 새로운 수정 된 사본을 반환하지 않는다는 것에주의하십시오. 그래서 그들은 위험 할 수 있습니다. 그러나 해시 및 대형 크기의 속도가 필요한 경우 이동하는 방법입니다. –

9

Erlang R17A에는지도 데이터 구조가 포함됩니다.

+0

R17은 이미 운영 중입니다. 다음은 해쉬 맵이 http://joearms.github.io/2014/02/01/big-changes-to-erlang.html에서 어떻게 작동하는지입니다. – gextra

관련 문제