2014-02-18 3 views
2

입니다. Clojure가 처리 할 수있는 컬렉션으로 시소에서 목록 상자의 값을 얻을 수있는 방법은 없나요?목록 상자의 값은 시소로

내가 가진 대부분의 Jloj는 Clojure가 처리 할 수없는 것이 었습니다.

/편집 : 명확히하기 : 예를 들어 목록 상자의 모든 요소를 ​​가져오고 새 요소를 conj에 가져 가고 싶습니다. 그러나 목록 상자의 반환 값은 JList이므로 Clojure는 자연스럽게 그렇게 할 수 없습니다.

목록 상자에서 모든 요소를 ​​추출하는 방법을 찾을 수없는 것 같습니다.

+0

"처리 할 수 ​​없음"이란 무엇을 의미합니까? 적절한 interop 메소드 (예 :'.getModel jl)를 사용하여 액세스 할 수없는 기능이 없어야합니다. – noisesmith

+0

명확성을 위해 예제를 추가했습니다. – WeGi

+1

JList 문서에는 목록을 수정해서는 안된다는 내용이 있습니다. Java로도 목록을 비우고 어쨌든 목록을 다시 만들고 싶습니다. – noisesmith

답변

4

See this. getModel 방법을 사용하여 ListModel을 얻을 수 있습니다. 그리고 getElementAtgetSize 메서드를 사용하여 원하는 배열이나 목록을 만들 수 있습니다.

(def data (into-array String ["one" "two" "three" "four"])) 
(def myList (JList. data)) 
(->> myList 
    .getModel 
    ((juxt identity (memfn getSize))) 
    ((fn [[a b]] (map #(.getElementAt a %) (range b)))) 
    (apply vector) (#(conj % "five")))