Next: Args as Variable or List, Up: Arguments [Contents][Index]
ある関数に引き渡すデータがもつべきデータ型は、その関数が使用する情報の種別に応じて異なります。数値を加算する+
のような関数にたいする引数は、数値であるような値をもたなければなりません。別の種類のデータを引数として使用する関数もあります。
たとえばconcat
は2つ以上のテキスト文字列の連結や結合を行い文字列を生成する関数であり、引数は文字列です。abc
およびdef
という2つの文字列を連結(def
)すれば、単一の文字列としてabcdef
が生成されます。
(concat "abc" "def")
この式を評価すると、値として"abcdef"
が生成されます。
substring
のような関数は、引数として文字列と数値の両方を使用します。この関数は文字列の一部、つまり1つ目の引数の部分文字列(substring)をリターンします。受け取る引数は3つで1つ目の引数は文字列、2つ目と3つ目の引数は部分文字列の先頭(含む)と最後(含まない)を示す数値です。これらの数値は文字列先頭からの文字数(スペースや区切り文字を含む)を指定します。文字列内の文字は1ではなく0から数えることに注意してください。
たとえば以下の式を評価してみてください:
(substring "The quick brown fox jumped." 16 19)
エコーエリアに"fox"
が表示されるはずです。式の引数は文字列と数値です。
substring
に渡した文字列はスペースで区切られた複数の単語から構成されているとしても、それは単一のアトムであることに注意してください。Lispは2つのクォーテーションマークの間にあるものは、スペースも含めてすべて文字列の一部だとみなします。substring
関数は他の方法では分割できないアトムを受け取ってその一部を抽出するので、これを一種のアトムシュレッダーと考えることができるでしょう。ただしsubstring
に可能なのは引数の文字列からの部分文字列の抽出であり、数値やシンボルなど他のタイプのアトムからの抽出はできません。