2015年1月21日水曜日

GIMP Script-Fu (4) 型変換と制御文字

前回 に引き続き、 GIMP Script-Fu の記述。
今回は 型変換と制御文字 です。
前の例で、表示の時、いきなり、変数を弄っていますが、 説明はしませんでした。
やはり、少し、触れておいた方がいいと思いますので ... 。


Script-Fu では、その母体となった Scheme ( Lisp 系 ) と同じく、
変数(関数)を定義する場合に、型を指定はしません。

以下は、Scheme の特徴から見た説明になります。  Script-Fu にも当て嵌まると思います。
少し、砕いて書きますので、 正確なものではありません。
    色々な所からの寄せ集めで、 付け焼刃 の知識ですが ... 。  まぁ、外れては いない でしょうから ... 。.

さて。
値を代入(指定) する時の 値の書き方で 型が決まります。
動的に、内蔵されたインタープリータ (平たく言えば、GIMP そのもの) が種類を判断しています。
砕いて言えば、 定義時に これは文字 これは数値 これは ... と明示しないのです。
でも、処理をするのに、型を意識した方がいいのは明白ですね。
どのプログラミング言語もそうですが、 常に変数の型を意識して操作する 事が肝要です。

プロシージャブラウザ で既定義の関数を覗いて見ると、
自分で書いた関数の引数が 何の型として捉えられているか が分ります。
他の関数を使って、処理を進める場合にも、 どんな型を引数として与えなければならないかが示されます。

ですから、数字を表示するとか、文字から数字を切り出すとか、そんな時には 型変換 が必要になります。
具体的な例は、前回 をご覧戴くとして、
以下に、 型変換 の記述を纏めます。

記述 変換前 変換後 備考
(string->symbol 文字列) 文字列 シンボル
(symbol->string シンボル) シンボル 文字列
(string->number 文字列) 文字列 数値
(number->string 数値) 数値 文字列
(string->list   文字列) 文字列 文字リスト
(list->string   リスト) 文字リスト 文字列
(string->regexp 文字列) 文字列 正規表現
(regexp->string 正規表現) 正規表現 文字列
(char->integer  文字) 文字 数値=文字コード
(integer->char  数値) 数値=文字コード 文字
(list->vector   リスト) リスト ベクタ
(vector->list   ベクタ) ベクタ リスト


おっと、忘れていました。  定数。  そうです、値の 代入(指定) を書いておかなければ。

定数 種類 記述 備考 注釈
数値 そのまま 整数のみ 実数は扱えない
文字 #¥~ #\~ ひと文字のみ
文字列 "~" "" 空文字  " " 空白 も可能
正規表現 #/~/
論理値 #t #f #t True 真 / #f False 偽
手続き (lambda (仮引数1 … 仮引数n) ~)
シンボル そのまま        例 'symbol 左括弧前に '
ペア '(左辺 . 右辺)       例 '(a.1) 左括弧前に '
ベクタ #(要素1 … 要素n) 1 次元配列のこと
リスト '(要素1 … 要素n)       例 '(a 1 2 "xy") 左括弧前に '
   ベクタとリストは似ていますが、違いがあります。  基本がベクタで、その拡張がリストです。  ベクタは ベクトルやベクターとも 表記されます。.
   データへのアクセス方法の違いがあり、  他言語での 配列がベクタ、 LinkedList がリスト、 と考えてよいと思います。
   その一般的な特徴は、
        要素に対してランダムなアクセスを必要とし、挿入削除の操作があまり必要ない場合は、 ベクタ。
        要素に対して順次アクセスで、挿入削除の操作を頻繁に行う場合は リスト が向いています。
   但し、ご自分で Script-Fu を書く場合には、 使いたい関数の 要求された 型に基づいて進めるので、
   任意に、これらを変更出来る訳ではありませんが ... 。  以上、参考程度にご覧下さい。



型変換と共に、表示に係る事柄として、 制御文字の書き方にも触れます。
所謂、改行やエスケープ文字です。  エスケープ文字:文法上、特殊な意味を持つ文字を そのまま文字として扱う場合の記述.

記述 種類 内容 備考 注釈
¥n 制御 改行 NewLine \n
¥r 制御 復帰 Return \r
¥t 制御 タブ Tab \t
¥¥ エスケープ ¥ \\
¥" エスケープ " \" エスケープ不要
¥~ \~ 文字列 "~" と同じ 複数
#¥~ #\~ 文字 "~" と同じ ひと文字

{注}
¥ は ブラウザ上で \ (バックスラッシュ 備考欄参照) になってしまうので、 ここのみ ¥ で ¥ を表示しました。



0 件のコメント:

コメントを投稿