search-forward 関数
¶search-forward 関数は、zap-to-char 内で文字として置換された箇所を特定するために使用されます。検索に成功した場合、search-forward は対象文字列の最後の文字の直後にポイントを移動させます。(zap-to-char では、対象文字列はわずか1文字です。zap-to-char は char-to-string
関数を使用して、コンピュータがその文字を文字列として扱うようにします。)検索が逆順だった場合、search-forward は対象文字列の最初の文字の直前にポイントを移動させます。また、search-forward は true に対して t
を返します。(したがって、ポイントの移動は副作用となります。)
zap-to-char では、search-forward 関数は次のようになります。
(search-forward (char-to-string char) nil nil arg)
search-forward 関数は4つの引数を取ります:
実は、zap-to-char
に渡される引数は単一の文字です。コンピュータの構造上、Lispインタプリタは単一の文字を、文字の文字列とは異なるものとして扱う場合があります。コンピュータ内部では、単一の文字は1文字の文字列とは異なる電子形式を持っています。(単一の文字は、多くの場合ちょうど1バイトでコンピュータに記録できますが、文字列はそれより長くなる可能性があり、コンピュータはそれに対応しておく必要があります。)search-forward 関数は文字列を検索するため、zap-to-char
関数が引数として受け取る文字は、コンピュータ内部で一方の形式からもう一方の形式へと変換されなければなりません。そうしないと、search-forward 関数は失敗します。char-to-string 関数は、この変換を行うために使用されます。
nil となります。
nilを返すことも可能です。第3引数にnilを指定すると、検索失敗時に関数がエラーを通知するようになります。
search-forward
の第4引数は繰り返し回数—文字列を何回検索するかです。この引数は省略可能で、繰り返し回数を指定せずに関数を呼び出した場合は、この引数に 1
が渡されます。この引数が負の値の場合、検索は逆方向に行われます。
テンプレート形式では、search-forward 式は次のようになります。
(search-forward "target-string"
limit-of-search
what-to-do-if-search-fails
repeat-count)
次はprognを見ていきます。