1
나는 REPL (lein-REPL 및 라이트 테이블)에 주위를 연주 해요 그리고 some
기능을 사용하는 방법에 대한 이상한 뭔가를 발견했습니다 :Clojure의 일부 기능에 담고는
(def my-vec [5 :test])
(some even? my-vec)
;=> java.lang.IllegalArgumentException: Argument must be an integer: :test
; core.clj:1351 clojure.core/even?
; core.clj:2515 clojure.core/some
(some odd? my-vec) ;=> true
(some integer? my-vec) ;=> true
(some map? my-vec) ;=> nil
(def my-vec2 [4 :test])
(some even? my-vec2) ;=> true
(some odd? my-vec2)
;=> java.lang.IllegalArgumentException: Argument must be an integer: :test
; core.clj:1351 clojure.core/even?
; core.clj:1357 clojure.core/odd?
; core.clj:2515 clojure.core/some
(some integer? my-vec) ;=> true
(some map? my-vec) ;=> nil
some
에 대한 문서는 말한다 :
some
clojure.core
([pred coll])
Returns the first logical true value of (pred x) for any x in coll,
else nil. One common idiom is to use a set as pred, for example
this will return :fred if :fred is in the sequence, otherwise nil:
(some #{:fred} coll)
이상한/정수가있는 정수에 대해 오류가 발생하는 이유는 무엇입니까? 벡터에 없을 때? 대신에 nil을 반환하지 않아야합니까?
보십시오. 답변 해줘서 고마워! – kurofune