gpt4 book ai didi

hashtable - Racket:在 hasheq 错误中找不到键值

转载 作者:行者123 更新时间:2023-12-02 22:45:23 32 4
gpt4 key购买 nike

作为用 Racket 编写的 servlet 的一部分,我想创建一个函数,将请求绑定(bind)(以 hasheq 表的形式,以字符串作为键和值)转换为 SQL 表行(再次编写为 hasheq-以字符串作为键、sql 类型作为值的表)。当相关函数收到两个哈希表时,一切似乎都按预期工作,此时它失败并出现以下错误:

请求绑定(bind)是:

'#hasheq(("lastname" . "Smith")
("firstname" . "John")
("birthdate" . "1900-10-25"))

列类型为

'#hasheq(("lastname" . "character varying")
("firstname" . "character varying")
("birthdate" . "date"))

错误信息是:

Servlet (@ /<... servlet URL ...>) exception:
hash-ref: no value found for key
key: "lastname"

奇怪的是,如果这些哈希表与相关代码片段一起粘贴到 DrRacket 提示符中,它运行时不会产生错误

The value "Smith" needs to be converted to type "character varying"
The value "John" needs to be converted to type "character varying"
The value "1900-10-25" needs to be converted to type "date"

我做错了什么?任何帮助是极大的赞赏!这是代码:

#lang racket

(define bindings-hash
'#hasheq(("lastname" . "Smith")
("firstname" . "John")
("birthdate" . "1900-10-25")))

(define types-hash
'#hasheq(("lastname" . "character varying")
("firstname" . "character varying")
("birthdate" . "date")))

(define (test)
(eprintf "The request bindings are \n~v\n" bindings-hash)
(eprintf "The column types are \n~v\n" types-hash)
(for ([(this-key this-value) (in-hash bindings-hash)])
(eprintf "The value ~v needs to be converted to type ~v\n"
this-value
(hash-ref types-hash this-key))))

(test)

最佳答案

使用字符串时使用hash-equal。符号保证可以与 eq? 一起使用,但字符串必须与 equal? 进行比较。

问题是 (eq? "foo""foo") 的结果未定义。

关于hashtable - Racket:在 hasheq 错误中找不到键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13208127/

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