Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Racket哈希表默认失败结果无效_Racket - Fatal编程技术网

Racket哈希表默认失败结果无效

Racket哈希表默认失败结果无效,racket,Racket,在Racket中,如果您尝试对密钥进行散列ref,则散列不包含,例如 (define a-hash #hash((1 . "a") (2 . "b"))) (hash-ref a-hash 3) 引发了一个exn:fail:contract …\Racket\collects\Racket\private\more方案。rkt:263:2:hash ref:找不到密钥的值 不幸的是,exn:fail:contract的范围太广了。如果尝试将值作为过程应

在Racket中,如果您尝试对密钥进行
散列ref
,则散列不包含,例如

(define a-hash #hash((1 . "a")
                     (2 . "b")))
(hash-ref a-hash 3)
引发了一个
exn:fail:contract

…\Racket\collects\Racket\private\more方案。rkt:263:2:hash ref:找不到密钥的值

不幸的是,
exn:fail:contract
的范围太广了。如果尝试将值作为过程应用,则会出现相同类型的异常

(with-handlers ((exn:fail? print))
  (10 11))
(exn:fail:contract“应用程序:不是过程;\n需要一个可应用于参数的过程\n给定:10\n参数…:\n 11“#)


是否有任何方法可以从使用它的代码外部更改
hash ref
失败结果
的默认值?我可以进入我的球拍安装并在那里更换它吗?这似乎既糟糕又危险。我有什么选择?我可以解析异常消息,但它散发着黑客和容易出错的气味。

中有
失败结果


您是否无法传入不同的
失败结果
?我不是直接调用hash ref,而是调用调用itAh ok的代码。我会针对调用
hash ref
的代码提交一个bug。我认为默认值应该是通用值。但这就是为什么
hash ref
允许程序员给出不同的
失败结果的原因。你在看球拍里的一个特定的图书馆吗?好的。我去那里看的原因是想猜出stchang问你的问题的答案:你在调用什么函数,它反过来调用
hash ref
?因为实际上这看起来像是一个函数不希望
hash ref
失败的情况——这是需要改变的地方。否则,我不认为你可以像你想象的那样使用monkey-patch
hash-ref
。这只剩下exn msg解析黑客想法的选项。
(define a-hash #hash((1 . "a")
                     (2 . "b")))
(hash-ref a-hash 3 #f) ; => #f