これは、かつて「AviSynthのぺーじ」として公開されていたものの "残骸" です。ここに記されている内容には、間違いが含まれている可能性があります。より正確で新しい情報を知りたい場合は、AviSynth 付属のドキュメントや AviSynth 公式サイトを参考にすることをおすすめします。私(にーやん)が管理人をつとめる AviSynth Wiki も利用してください。また、このページは、予告なしに削除される可能性もあります。
省略可能な引数と省略不可能な引数
 引数を省略可能にするためには、引数リストの引数名を二重引用符("")で囲まなければなりません

 まとめると、次のようになります。
(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)
#//--- widthheightを求める ---//
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型の引数のデフォルト値を設定することも可能です。ただし、次回以降で紹介する予定の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)
#//--- widthheightを求める ---//
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日
前のページ | 次のページ