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

return文のうしろにreturn文?

 return文について少し補足をしておきたいと思います。

 return文はAviSynthの文法でも紹介したように、AviSynthにおける記述方法の一つです。

 returnは「返す(戻す)」という意味で、return 式」で式(の結果=ビデオクリップ)を返す(戻す)ということを表しました。そして、return文によって返された(戻された)ビデオクリップがVirtualDubModなどのアプリケーションへ渡されるんでしたね。
 たとえば、こちらのスクリプトをVirtualDubModで開くと、320x240のカラーバーが表示されます。

 「ColorBars(320, 240)」はColorBarsフィルタを実行する式を表すとともに、その結果としてのビデオクリップも表しました。

 ですから、「return ColorBars(320, 240)」で320x240サイズのカラーバーが作成され、そして表示されたのです。
 では、return文のあとにスクリプトを記述した場合はどうなるでしょうか?

 たとえば先程のスクリプトにつづけて、もうひとつreturn文を追加してみます。
 この場合、最初のreturn文ですでに戻り値return value)が宣言されていますので、2行目のreturn文は無視されます。
 つまり、反転(FlipVertical)していない普通のカラーバーがつくられます。

return last

 もう一つreturn文に関するお話を。

 それはreturn lastは必要かということです。

 とりあえず「おまじない」みたいにつけとけ!とか言ってた人もいましたね。

 ・・・私です(笑)

 で、結論から言うと、「return lastがなくても大丈夫なことが多い」ということになります。

 カラーバーの時の話を思い出してください。
 return lastは書いていませんが、このスクリプトを実行すれば、ちゃんと反転カラーバーが表示されましたね。

 このように変数指定が省略されている場合は、自動的に特別な変数lastが割り当てられるのでした。
 つまり、上のスクリプトは、こちらのスクリプトと同様の処理を行っていることになります。

 ただし、この場合、return lastは必要です。
 なぜなら、ビデオクリップは変数に代入されたまま放置プレイ(なんていい加減な表現なんだ!)されているからです。
 実際、実行してみると、このようなエラーが出ました。

 つまり、変数を指定している場合は、ちゃんとreturn文で戻してやらないといけないということになります。
 それはlast以外の変数を指定したときも同様です。

 左の例では変数clipが使われているので、return clipで戻します。
 ちなみにreturn clipの後にreturn lastを付け加えても、すでにreturn clipで戻り値が指定されているのでreturn lastは意味を持ちません。

 何でもかんでも最後にreturn lastを書けばいいというものではないということですね。
 じゃあ、にーやんのサンプルスクリプトにreturn lastが書いてあるのはなぜ?

 おまじないです(笑)

クイズの答え

 さて、それではクイズの答え合わせです!

 ここにたどり着くまで長かったよ・・・_| ̄|○(笑)

 すでに問題を忘れてしまった人もいると思うので、まず問題から確認してみることにしましょう。
[ 問題 ]
左のスクリプトのreturnのうしろには何が入るでしょうか?答えは2つ。
 では、答えの一つ目。
[ 答え1 ] video

 return videoでvideoを戻します。

 二行目を見てもらえばわかるように、videoとはlast.FlipVertical()のことです(videoに代入されている)ので、つまりこの場合、反転カラーバーを戻すことになります。
 二つ目。
[ 答え2 ] last

 return lastlastを戻します。

 lastは一行目で指定されている変数ですので、通常のカラーバーを戻すことになります。

 この場合、二行目は無視されます。
 みなさん、わかりましたか?

 スクリプト入門第2章「はじめてのスクリプト」はこれで終わりです。

 スクリプトのすべて・・・とは言いませんが、これからAviSynthスクリプトをやっていく上で必要となる基本的な事柄は、ある程度、紹介することができたのではないかと思います。

 さて次回からは、これまでの内容をふまえて、もう少し発展的な内容に踏み込んで行こうかと思います。

 といっても、心配はいりません。

 これまで通り、なるべくわかりやすくやっていきますので。

 ていうか、わかりやすいのかな?こっちが心配だ(^^;
最終更新日 2003年12月23日
前のページ | 次のページ