Używam klasy Java, która reprezentuje sekwencję wyników (trochę jak wektor Clojure).Ustaw klasę Java jako sekwencję w Clojure
Chciałbym użyć tej klasy z typowymi funkcjami sekwencji Clojure (tj. Chcę, aby klasa zachowywała się tak, jakby obsługiwała abstrakcję sekwencji), jednak I nie może zmienić klasy, więc nie jestem w stanie jej wykonać implementacja clojure.lang.Seqable
lub podobna. Ponadto, irytująco, klasa nie implementuje java.util.Collection
lub java.lang.Iterable
.
Widzę kilka możliwości:
- Zastosowanie
iterator-seq
ON (istniejącego) iterator obiektu. - Wrap przedmiot w innej klasy, która implementuje
java.util.Collection
/clojure.lang.Sequable
- utworzyć funkcję, która buduje wektor Clojure lub sekwencji przez odpytywanie Object
Czy są jakieś inne opcje? Jakie jest najlepsze podejście?
'iterator-seq' wydaje się być w porządku, wewnętrznie robi to samo, co drugi punkt dotyczący zawijania obiektu – Ankur