球拍列表结果如果没有索引元素



我正在尝试在球拍中修改此程序,以便如果此列表中没有索引元素,则应返回#f。一些指导很有帮助。预先感谢

#lang racket
(define get-nth
  (lambda (index lst)
    (let loop ((index index) (my-list lst))
      (cond ((null? my-list) lst)
            ((= index 0) (car my-list))
            (else (loop (- index 1) (cdr my-list)))))))
(get-nth 4 '(a b))

;#f

只需返回 #f而不是列表...

(define get-nth
  (lambda (index lst)
    (let loop ((index index) (my-list lst))
      (cond ((null? my-list) #f)
            ((= index 0) (car my-list))
            (else (loop (- index 1) (cdr my-list)))))))

因为现在我们不必"记住"原始输入列表,所以我们可以简化事物并消除命名的 let,例如:

(define get-nth
  (lambda (index lst)
    (cond ((null? lst) #f)
          ((= index 0) (car lst))
          (else (get-nth (- index 1) (cdr lst))))))

您可以忘记let loop,而是使用尾部回复。如果您试图比列表的Lenght更长的索引,则列表将是空的,因此,当列表为空时,返回false

#lang racket
(define get-nth
  (lambda (index lst)
      (cond 
        ((empty? lst) #f)
        ((= index 0) (car lst))
        (else (get-nth (- index 1) (cdr lst))))))

最新更新