我如何在这里正确使用nth?

时间:2014-09-01 23:38:01

标签: clojure

我对此很陌生,所以如果这看似微不足道,我道歉。

尝试使用n时,我得到IndexOutOfBoundsException,因为lst的大小可能小于2.我该如何解决这个问题?

(defn invert-helper [lst]
     (list (nth lst 1) (first lst)))

谢谢!

1 个答案:

答案 0 :(得分:0)

nth函数有一个3-arity选项,用于不希望因超出范围而抛出异常的情况。作为第3个参数,您提供了在索引超出范围时返回的值。这避免了首先检查长度然后以不计数的顺序执行nth的低效率。

user=> (nth [1 2 3] 5 nil)
nil

user=> (nth [1 2 3] 5 ::not-found)
:user/not-found