123 は数値、”123″ は文字。使い分けましょう。
文字列と数値
文字列と数値の違い
AutoLISPでプログラミングする場合、文字列の場合、必ず ”” クォーテーションマークで囲う必要があります。そして数値はそのままです
例えば、同じ数字を使う時でも、“123” は文字列、123は数値です。
人には同じ数字に見えても、コンピューターは別物として扱うから、必ず違いを理解して使い分けてね。
使い分け方
関数によって必要な情報を引数として一緒に書き込みます。使う関数に必要な引数がどちらのタイプなのか、ヘルプページ見て調べましょう。
文字列が必要な関数に数字を入力したり、逆に数値が必要な関数に文字列を入力するとエラーになります。
文字列の例
例えば、警告ボックスに文字を表示する関数 alert。Autodeskの関数ページを見ると、
関数と一緒に引数としてメッセージを入れるようになっていてい、タイプに文字列とありますね。なので、ここに入れる引数はダブルクォーテーションマークで囲ったものでないといけません。
数値の例
数値の例でいうと、2つ以上の数字を合算する機能がある + があります。
Autodeskの関数ページを見ると、
引数はnumber とあり、number の説明の所に数値とありますね。
この場合、(+ “1” “2”) というような書き方をすると文字列として認識されてエラーになります。ダブルクォーテーションは無しで、(+ 1 2) としなければ、数値として処理されません。
文字列にダブルクォーテーションマークを忘るのはありがちなミスです。
AutoLISPプログラムが作動しないとき、引数の文字列/数値が間違っていないかチェックしよう。
エラーメッセージ
数字/文字列が間違っているAutoLISPを読み込むとエラーメッセージがコマンドバーに出ます。
numberp は、数字が入っていなければいけない所に違う物がある。
stringpは、文字列が入っていなければいけない所に違う物がある。
という意味です。
例えば、(+ “1” “2”)だと、numberp: “1”、(alert 12) だと stringp:12 というメッセージがコマンドバーに表示されます。
まとめ
- AutoLISPでは、数値と文字列は違う物として使い分けている。
- 数値はそのまま数字だけ。例 123
- 文字列にはダブルクォーテーションマーク ” ” が付く。例 ”123″
- 間違えるとエラーになってプログラムが作動しない。
- 文字列/数値の間違いはありがちなので気を付ける。
- エラーメッセージ numberpは数値、stringpは文字列が必要なところに違う物があるとうこと。
Comments