2010-02-16 3 views
0

maglev 개체 배열을 검색하려면 어떻게해야합니까? Maglev는 훌륭하지만 쿼리 기능이없는 것 같습니다. 이것을위한 외부 라이브러리가 있습니까?Ruby Maglev 오브젝트 배열을 검색하려면 어떻게해야합니까?

+0

Maglev는 여전히 알파 단계에있는 것처럼 보입니다. 그래도 아직 일부 기능이 누락 된 경우 놀라지 않을 것입니다. – bta

+0

감사합니다. 어쩌면 나는 2 년 후에 그것을 다시 사용하려고 시도 할 것입니다. (이미 두 가지 기다렸습니다 :) – Zubair

답변

2

기본 MagLev VM은 꽤 오랫동안 인덱스를 지원합니다. 컬렉션에 대한 색인 생성 및 쿼리의 예가 있습니다. http://github.com/MagLev/maglev/tree/master/examples/persistence/indexing/

잠시 색인 생성을 해제해야하지만, 다음 릴리스에서 업데이트 된 예를 사용하여 설정해야합니다 (아마 며칠 내에).).

+0

고마워요, 또 2 년을 기다릴 필요는 없을 것입니다! :) – Zubair

1

Maglev 1.0.0은 현재 IdentitySet입니다.이 기능은 다중 속성 검색 및 색인 유지 관리 기능을 갖춘 매우 강력한 쿼리 메커니즘이 될 수 있지만 현재로서는 "Ruby와 유사하지 않습니다". 당신은 당신이 인덱스를 정의 할 모든 속성을 정의해야합니다 때 처음 정의는 두 번째 (그래서 당신이를 호출 할 때 예외가 발생합니다 정적 메소드 self.__fixed_instvars :@inst_var1, :@inst_var2, ...을 사용하여 클래스 클래스가 두 번로드 될 때 실행되지 않도록 별도의 가드를 추가하십시오.

이것은 클래스가 버전을 가지고 정적 인 상태 인 스몰 토크 관점에서 볼 수있는 것처럼 보이지만 시간이 지남에 따라 발전하는 하나의 "현재"클래스 정의의 Maglev 상황에는 맞지 않습니다.

배열을 쿼리하는 데 문제가 있다면 대부분의 데이터 구조에 대해 구현 된 루비 선택 메서드를 사용할 수 있지만 일반적으로 모든 개체를 순회하면서 인덱스를 사용하지는 않습니다.

1

나는

첫째, "자기 부상 배열"그냥 루비 배열의 같은 건 없다 ...이 조금 늦게 깨닫게하지만. Ruby 배열이기 때문에 Array#selectArray#detect을 사용할 수 있습니다. Peter가 말했듯이, 색인 생성 기능이 내장되어 있지만 색인 생성은 정렬되지 않은 모음에서만 사용할 수 있습니다.