我正在尝试编写一个函数来检查给定的输入是否包含除数字以外的任何字符。但是,我contract violation
在 Scheme 下进入 DrRacket。
这是代码:
将字符串分隔为字符的方法:
(define (breaking str) (list->vector (string->list str)))
为数字创建一个向量:
(define myNumber (breaking "123498765"))
在这里我检查给定的数字:
(define (vectorFunc myVector)
(define i 0)
(do ()
((= i (vector-length myVector))) ; run until the end of the vector
(cond ((< (vector-ref myVector i) #\0) 'incorrect)
((> (vector-ref myVector i) #\9) 'also-incorrect))
(set! i (+ i 1)) ; inc "i+ by 1
); end of do
)
的输出(vectorFunc myNumber)
是:
. . >: contract violation
expected: real?
given: #\1
argument position: 1st
other arguments...:
#\0
>
它出什么问题了 ?