2012-12-11 73 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)) #\.)