2012-12-11 32 views
2

鉴于myVector是一个载体,i是索引,当我这样做:检查符号是否为方案中的点字符:#。?

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

我得到:

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

我如何检查是否在位置i字符是一个.

回答

3

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

返回#T如果所有的参数都是eqv?

特别是对于你的例子:

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

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

几个你在过去几天的问题已经涉及到字符或字符串操作,我建议你看看文档好好看看页面处理thosesubjects

+0

猜猜我应该仔细看看错误信息:) +1 – leppie

1

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

您需要将数字转换为字符或反之。

如:

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

或者

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