AviSynthのぺーじ/引数リストの記述法
これは、かつて「にーやんのAviSynthのぺーじ」として公開されていたものを転載したものです。内容は古く、間違いも含まれている可能性があります。より正確で新しい情報を知りたい場合は、AviSynth 付属のヘルプや AviSynth 公式サイトを参考にすることをおすすめします。AviSynth Wiki の AviSynth入門なども活用してください。
省略可能な引数と省略不可能な引数 †
引数を省略可能にするためには、引数リストの引数名を二重引用符("")で囲まなければなりません。
まとめると、次のようになります。
(1)引数省略不可: †
- 記述方法: [データ型 引数名]
- 記述例:
function EasyClipping(clip clip, int top, int bottom, int left, int right )
(2)引数省略可: †
- 記述方法: [データ型 "引数名"]
- 記述例:
function EasyClipping(clip clip, int "top", int "bottom", int "left", int "right")
EasyClipping関数の引数リストを、引数が省略できるように変更しました。
function EasyClipping(clip clip, int "top", int "bottom", int "left", int "right") { #//--- デフォルト値の設定 ---// top = default(top, 0) bottom = default(bottom, 0) left = default(left, 8) right = default(right, 8) #//--- widthとheightを求める ---// width = Width(clip) - (left + right) height = Height(clip) - (top + bottom) #//--- Cropフィルタ(書式1) ---// clip = Crop(clip, left, top, width, height) #//--- return文 ---// return clip }
これで、引数を省略してもエラーは出なくなります。
引数clipの扱い †
ところで、引数リストを修正したEasyClipping関数では、clip型の引数clipだけが、そのまま省略不可の形になっています。これは、なぜか。
function EasyClipping(clip "clip", ...
たとえば、引数clipを二重引用符で囲んで、省略可能な形にしてみます。
しかし、この状態で次のスクリプトを実行しても、エラーが出てしまいます。
ColorBars(720, 480) EasyClipping()
引数clipも省略されているため、EasyClipping関数から見ると、受け取るべきクリップがわからない(クリップを受け取れない)状態になっているのです(下記のメモを参照)。
function EasyClipping(clip clip, ...
一方、clipを二重引用符で囲まなかった場合。この場合は、引数を省略することができません。
しかし、こちらは次のスクリプトが通ります。
ColorBars(720, 480) EasyClipping()
一見、引数clipが省略されているように見えます(スクリプト上は省略されています)。
しかし、この場合のEasyClipping関数では、引数clipは省略することができません。必ず指定されていなければなりません。
ですから、変数省略時に割り当てられる特別な変数lastが、自動的に使われるのです。
メモ: clip型引数のデフォルト値の設定 †
clip型の引数のデフォルト値を設定することも可能です。ただし、次回以降で紹介する予定のglobal変数が含まれてきますので、ここではスクリプトの例を紹介するにとどめておきます。
global c = ColorBars(720, 480) EasyClipping() function EasyClipping(clip clip, int "top", int "bottom", int "left", int "right") { #//--- デフォルト値の設定 ---// clip = default(clip, c) top = default(top, 0) bottom = default(bottom, 0) left = default(left, 8) right = default(right, 8) #//--- widthとheightを求める ---// width = Width(clip) - (left + right) height = Height(clip) - (top + bottom) #//--- Cropフィルタ(書式1) ---// clip = Crop(clip, left, top, width, height) #//--- return文 ---// return clip }
最終更新日 2004年8月8日