鉴于myVector
是一个向量而i
是一个索引,当我这样做时:
(= (vector-ref myVector i) #\.)
我明白了:
=: contract violation
expected: number?
given: #\.
argument position: 1st
other arguments...:
#\.
如何检查i
位置的字符是否为.
?
答案 0 :(得分:3)
您不应该将字符转换为数字,只需使用文档中的char=?
过程:
如果所有参数都是eqv,则返回#t
特别是你的例子:
(define myVector #(#\1 #\. #\2))
(define i 1)
(char=? (vector-ref myVector i) #\.)
=> #t
答案 1 :(得分:1)
编辑:这错误地假设向量是数字而不是字符。使用奥斯卡的答案。
您需要将数字转换为字符或反之。
例如:
(= (vector-ref myVector i) (char->integer #\.))
或者
(char=? (integer->char (vector-ref myVector i)) #\.)