2

それmyVectorがベクトルでiあり、インデックスであるとすると、これを行うと:

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

私は得る:

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

ロケーションの文字iが であるかどうかを確認するにはどうすればよい.ですか?

4

2 に答える 2

3

文字を数値に変換しないでくださいchar=?。ドキュメントの手順を使用してください。

すべての引数が eqv? の場合、#t を返します。

特にあなたの例では:

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

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

ここ数日の質問のいくつかは、文字または文字列の操作に関連していました。これらの 主題を扱っているドキュメント ページをよく確認することをお勧めします。

于 2012-12-11T11:59:47.670 に答える
1

編集:これは、ベクトルが文字ではなく数値であると誤って想定していました。オスカーの答えを使用してください。

数値を文字に、またはその逆に変換する必要があります。

例えば:

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

または

(char=? (integer->char (vector-ref myVector i)) #\.) 
于 2012-12-11T11:53:37.937 に答える