1
我很新,所以我很抱歉,如果這似乎微不足道。如何在這裏正確使用nth?
當試圖使用nth時,我得到一個IndexOutOfBoundsException
,因爲lst
的大小可能小於2.我該如何解決這個問題?
(defn invert-helper [lst]
(list (nth lst 1) (first lst)))
謝謝!
我很新,所以我很抱歉,如果這似乎微不足道。如何在這裏正確使用nth?
當試圖使用nth時,我得到一個IndexOutOfBoundsException
,因爲lst
的大小可能小於2.我該如何解決這個問題?
(defn invert-helper [lst]
(list (nth lst 1) (first lst)))
謝謝!
nth
函數有一個3-arity選項的情況下,你不希望拋出一個例外,因爲出界。您提供了作爲第三個參數的索引超出範圍時要返回的值。這樣可以避免首先檢查長度,然後以不計數的順序執行nth
的低效率。
user=> (nth [1 2 3] 5 nil)
nil
user=> (nth [1 2 3] 5 ::not-found)
:user/not-found
使用'if'先測試長度。 – Barmar 2014-09-01 23:43:41
Gah!我早些時候嘗試過,我一定搞砸了我的if語句。儘管這次工作。非常感謝! – 2014-09-01 23:52:44
你也可以使用'second',如果'lst'爲空或零,則返回nil。當然,如果這不是你想要的,你必須檢查零或空序列。 – 2014-09-02 00:39:06