2010-06-15 6 views
1

나는 Erlang에서 기대했던대로 키 픽스를 얻을 수 없다.목록 : keyfind 문제

나는 다음과 같은 EUNIT 테스트 한 :

나는 다음과 같은 오류 메시지가 얻을이 테스트를 실행할 때마다
should_find_key_test() -> 
    NewList = lists:keystore("key", 1, [], {"key", "value"}), 
    Value = case lists:keyfind("key", 1, NewList) of 
     false -> 
      notfound; 
     {_key, _value} -> 
      _value 
    end, 
    ?debugVal(Value). 

:

indextests : should_find_key_test (모듈 'indextests')를 ... 실패 :: error : undef 함수 목록 : keyfind/3 은 keyfind ("key", 1, [{ "key", "value"}])로 불려 짐indextests에서 호출 : should_find_key_test/0

내가 뭘 잘못하고 있는지 알 수 있습니까?

목록 : keyfind가 더 이상 존재하지 않는다고 말하고 있습니까?

+0

어떤 Erlang 버전을 실행하고 있습니까? 'lists : keyfind/3'은 아주 최근 버전입니다. 어떤 버전이 추가되었는지는 기억이 나지 않습니다. – rvirding

답변

3

목록 : keyfind/3는 OTP/R13A에서 소개되었습니다. 나는 이전 버전을 사용하고 있다고 생각합니다. R13A 이전에는 목록을 사용합니다 : serachkey/3. 동일한 튜플이 있지만 리턴 된 데이터는 약간 다른 구조로되어 있습니다.

should_find_key_test() -> 
    NewList = lists:keystore("key", 1, [], {"key", "value"}), 
    Value = case lists:keysearch("key", 1, NewList) of 
     false -> 
      notfound; 
     {value {_Key, _Value}} -> 
      _Value 
    end, 
    ?debugVal(Value). 

release notes

는 keyfind/3 BIF는 STDLIB 버전 1.6에 추가되는 나타낸다. STDLIB 버전을 확인하십시오.

+0

그것은 실제로 erlang 버전이었습니다. 내가 읽은 설치 지침은 R12A 버전을 다운로드 할 것을 제안했습니다. – dagda1