gpt4 book ai didi

syntax-error - 为什么返回错误 'Cannot read property ' car' of undefined [ ]' 即使我有空列表的回退?

转载 作者:太空宇宙 更新时间:2023-11-03 18:56:54 25 4
gpt4 key购买 nike

我正在尝试构建一个过程来比较两个列表(这是一个更大列表的元素)并返回它们的相似程度。该过程将通过对两个列表中同一索引中的元素之间的差异求和来完成此操作。这是通过比较两个列表的 car 递归完成的,再次调用自身,运行结果是比较,新列表是两个列表的 cdr,最后当两个列表都为空时返回结果。但是,当我对此进行测试时,即使我有一个 if 语句在列表为空时返回结果,也会返回以下错误:

Cannot read property 'car' of undefined [ ]

我相当确定我的 let 语法是正确的,因为它已在先前的问题中修复,并且唯一一次在其他过程中使用了 car used 单独运行时没有任何错误。发生了什么,如何解决?

代码:

(define (get-list name arr)
(if (eq? name (car (car arr)))
(cdr (car arr))
(get-list name (cdr arr))))
(define (similarity-arrays name1 name2 arrs result)
(let ((arr1 (get-list name1 arrs))
(arr2 (get-list name2 arrs)))
(if (= (length arr1)(length arr2))
(let ((x1 (car arr1))
(x2 (car arr2)))
(if (null? arr1))
result
(similarity-arrays
(cdr arr1)
(cdr arr2)
(+ result (- x1 x2)))))
#f))
(define dust
(list (list 'akko 11 3 7 5 4 1 9 8 10 6 2)
(list 'Jodast 10 7 4 6 5 1 11 9 8 3 2)

(similarity-arrays 'Jodast 'Akko dust 0)

最佳答案

您的代码存在多个问题。例如:

  • (if (null? arr1))表达式是 if没有结果或选择,因为最右边的 )一定不能在那里关闭,只能在结果和替代之后。
  • 递归调用similarity-arrays不正确,您传递的参数类型错误,参数数量也不正确。
  • 与前一个相关:都在get-list中和 similarity-arrays有时您假设参数是元素,而其他时候它们是列表
  • 还有其他部分括号不平衡,例如dust的定义中.使用良好的 IDE 并正确缩进代码以显示缺少括号的位置
  • 我们应该尽量避免使用length ,如果通过询问它是 null? 来确定我们是否已经到达列表末尾的方法.
  • 对于这个问题你应该使用equal?用于测试相等性,而不是 eq? .
  • 传递一个包含两个列表的列表会使迭代更加困难,您是否考虑过传递两个列表?

关于syntax-error - 为什么返回错误 'Cannot read property ' car' of undefined [ ]' 即使我有空列表的回退?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56352701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com