2

鉴于这myVector是一个向量并且i是一个索引,当我这样做时:

(= (vector-ref myVector i) #\.) 

我得到:

=: contract violation
  expected: number?
  given: #\.
  argument position: 1st
  other arguments...:
   #\.

如何检查位置的字符i是否为 a .

4

2 回答 2

3

您不应该将字符转换为数字,只需使用char=?文档中的过程:

如果所有参数都是 eqv,则返回 #t?

特别是对于您的示例:

(define myVector #(#\1 #\. #\2))
(define i 1)

(char=? (vector-ref myVector i) #\.)
=> #t

您最近几天的一些问题与字符或字符串操作有关,我建议您仔细查看处理这些 主题的文档页面。

于 2012-12-11T11:59:47.670 回答
1

编辑:这错误地假设向量是数字而不是字符。使用奥斯卡的答案。

您需要将数字转换为字符,反之亦然。

例如:

(= (vector-ref myVector i) (char->integer #\.)) 

或者

(char=? (integer->char (vector-ref myVector i)) #\.) 
于 2012-12-11T11:53:37.937 回答