나는 다음과 같은클로저에 유형 목록을 정의하는 방법은 무엇입니까?
(defrecord Foo [a b])
지금 내가
(def f (Foo. 10 20))
으로이 형식의 인스턴스를 선언 할 수 있도록 내 UDT를 정의 할 무언가를 갖고 싶어하지만, 내가 어떻게이의 배열과 같은 자바를해야합니까 클로제.
나는 new ArrayList<Foo>()
(또는 뭔가 가깝다.)을 갖고 싶어서 Add 메서드를 반복적으로 호출하여 새로운 Foo를 목록에 추가 할 수있다.
그렇게 할 방법을 찾을 수 없습니다.
편집 :
내가 푸의 키에 내 물건을 매핑 할 Clojure에서 말할 필요. 그래서, 나는
(defrecord Foo [a b c])
(def foo-data
[ "foo1" 1 8
"foo2" 2 7
"foo3" 3 6
"foo4" 4 5])
나는 doseq 이러한 액세스 할 수 있습니다하지만 내가 ArrayList를 만들 필요가 있고 형 푸의 그것의 ArrayList에 아웃 내 foo는 데이터를 이동 한 다음 할 말을하는 방법이 필요합니다 그런 다음 어떤 조작을 수행하는 으로 작업하십시오. 나는 그런 시나리오 벡터 같은 Clojure의 데이터 구조를 사용하는 것이 좋습니다 것입니다
user=> (import 'java.util.ArrayList)
user=> (def data (ArrayList.))
#'user/data
user=> (.add data (Foo. 10 20))
:로
(def data (ArrayList.)), 이것은 ArrayList의 새 인스턴스를 선언 한 다음 데이터에 대해 add 메서드를 호출하고 있습니까? 이 경우 어떻게 벡터를 사용할 수 있습니까? 어떤예요? –
예. 벡터 – Ankur
의 예제를 추가했습니다. 데이터를 0으로 만들 때, 컴파일러에게 어떻게 타입 foo를 얻고 있는지 어떻게 말합니까? 그래서 나는 캐스팅을해야만합니다. 우리는 제초제를 또한 가지고 있습니까? –