2013-04-10 3 views
2

Clojure를 처음 접하고 next를 많이 사용하지 않고 시퀀스를 인덱싱하는 방법을 처음 접하게됩니다. 예를 들어 I 시퀀스가 ​​있다고 :Clojure - 다음을 사용하지 않고 시퀀스 인덱싱

(a B의 C D 전자 f를 g의 H)

및 I는 시퀀스의 4 항목으로 반환하는 함수에 통합 할. 그 외에도 (next (next (next sequence_name))) 외에 어떤 방법이 있어야합니까? 따라서 함수 (또는 다른 숫자)에 숫자 4를 전달하고 시퀀스에서 해당 항목을 가져올 수 있습니다. 감사!

답변

3

몇 가지 방법 : - 그것은 완전히 가치가

(take 1 (drop 3 '(a b c d e f g h))) ;; d 

(nth '(a b c d e f g h) 3) ;; d 

(nth [a b c d e f g h] 3) ;; d 

(nth (vec '(a b c d e f g h)) 3) ;;d 

나는 당신이 Clojure의 Cheat Sheet의 시퀀스 조작 함수에 익숙해지는 것이 좋습니다. Clojure의 시퀀스 라이브러리는 매우 풍부합니다.

+0

감사합니다 (즉, 물론 0 색인)! Clojure Cheat Sheet를 둘러 보았는데 너무 많은 것을 배워야했습니다. 이제 유일한 문제는 시퀀스가 ​​변수로 저장 될 때 시퀀스를 인덱싱해야한다는 것입니다. x에 저장 한 (n 번째 'x 4) 및 (n'(x) 4) 등이 작동하지 않는 것처럼 보입니다. 또는 시퀀스를 직접 인덱싱 만 할 수 있습니까? – Instinct

+0

또한 "abcdefg"를 x로 저장 한 다음 (n 번째 '(seq x) 4) 분명히 잘못되어 인덱스에서 경계를 벗어나 예외를 만들었습니다. =/ – Instinct

+1

변수에 인용 부호가 필요하지 않은 경우 . 그냥'(n 번째 x 4)'를 시도하면 끝난다. :) – leonardoborges

2

좋은 오래된 nth 트릭을

user> (nth '(a b c d e f g h) 4)                                     
e 

을 수행해야합니다 빠른 답변을

관련 문제