【发布时间】:2012-11-26 23:15:38
【问题描述】:
我正在尝试编写一个函数来检查给定的输入是否包含除数字以外的任何字符。但是,我在 Scheme 下的 DrRacket 中得到了contract violation。
代码如下:
一种将字符串分割成字符的方法:
(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
>
它有什么问题?
【问题讨论】:
标签: string vector functional-programming scheme racket