检查符号是否为scheme中的点字符:#\。?

时间:2012-12-11 11:50:19

标签: vector char scheme

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

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

我明白了:

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

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

2 个答案:

答案 0 :(得分:3)

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

  

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

特别是你的例子:

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

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

过去几天你的一些问题与字符或字符串操作有关,我建议你仔细查看处理those subjects的文档页面。

答案 1 :(得分:1)

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

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

例如:

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

或者

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