Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
鉴于这myVector是一个向量并且i是一个索引,当我这样做时:
myVector
i
(= (vector-ref myVector i) #\.)
我得到:
=: contract violation expected: number? given: #\. argument position: 1st other arguments...: #\.
如何检查位置的字符i是否为 a .?
.
您不应该将字符转换为数字,只需使用char=?文档中的过程:
char=?
如果所有参数都是 eqv,则返回 #t?
特别是对于您的示例:
(define myVector #(#\1 #\. #\2)) (define i 1) (char=? (vector-ref myVector i) #\.) => #t
您最近几天的一些问题与字符或字符串操作有关,我建议您仔细查看处理这些 主题的文档页面。
编辑:这错误地假设向量是数字而不是字符。使用奥斯卡的答案。
您需要将数字转换为字符,反之亦然。
例如:
(= (vector-ref myVector i) (char->integer #\.))
或者
(char=? (integer->char (vector-ref myVector i)) #\.)