return文のうしろにreturn文?
return文について少し補足をしておきたいと思います。
return文はAviSynthの文法でも紹介したように、AviSynthにおける記述方法の一つです。
returnは「返す(戻す)」という意味で、「return 式」で式(の結果=ビデオクリップ)を返す(戻す)ということを表しました。そして、return文によって返された(戻された)ビデオクリップがVirtualDubModなどのアプリケーションへ渡されるんでしたね。
return文はAviSynthの文法でも紹介したように、AviSynthにおける記述方法の一つです。
returnは「返す(戻す)」という意味で、「return 式」で式(の結果=ビデオクリップ)を返す(戻す)ということを表しました。そして、return文によって返された(戻された)ビデオクリップがVirtualDubModなどのアプリケーションへ渡されるんでしたね。
たとえば、こちらのスクリプトをVirtualDubModで開くと、320x240のカラーバーが表示されます。 「ColorBars(320, 240)」はColorBarsフィルタを実行する式を表すとともに、その結果としてのビデオクリップも表しました。 ですから、「return ColorBars(320, 240)」で320x240サイズのカラーバーが作成され、そして表示されたのです。 |
では、return文のあとにスクリプトを記述した場合はどうなるでしょうか?
たとえば先程のスクリプトにつづけて、もうひとつreturn文を追加してみます。
たとえば先程のスクリプトにつづけて、もうひとつreturn文を追加してみます。
この場合、最初のreturn文ですでに戻り値(return value)が宣言されていますので、2行目のreturn文は無視されます。 |
つまり、反転(FlipVertical)していない普通のカラーバーがつくられます。 |
return last
もう一つreturn文に関するお話を。
それはreturn lastは必要かということです。
とりあえず「おまじない」みたいにつけとけ!とか言ってた人もいましたね。
・・・私です(笑)
で、結論から言うと、「return lastがなくても大丈夫なことが多い」ということになります。
カラーバーの時の話を思い出してください。
それは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 videoでvideoを戻します。 二行目を見てもらえばわかるように、videoとはlast.FlipVertical()のことです(videoに代入されている)ので、つまりこの場合、反転カラーバーを戻すことになります。 |
二つ目。
return lastでlastを戻します。 lastは一行目で指定されている変数ですので、通常のカラーバーを戻すことになります。 この場合、二行目は無視されます。 |
みなさん、わかりましたか?
スクリプト入門第2章「はじめてのスクリプト」はこれで終わりです。
スクリプトのすべて・・・とは言いませんが、これからAviSynthスクリプトをやっていく上で必要となる基本的な事柄は、ある程度、紹介することができたのではないかと思います。
さて次回からは、これまでの内容をふまえて、もう少し発展的な内容に踏み込んで行こうかと思います。
といっても、心配はいりません。
これまで通り、なるべくわかりやすくやっていきますので。
ていうか、わかりやすいのかな?こっちが心配だ(^^;
スクリプト入門第2章「はじめてのスクリプト」はこれで終わりです。
スクリプトのすべて・・・とは言いませんが、これからAviSynthスクリプトをやっていく上で必要となる基本的な事柄は、ある程度、紹介することができたのではないかと思います。
さて次回からは、これまでの内容をふまえて、もう少し発展的な内容に踏み込んで行こうかと思います。
といっても、心配はいりません。
これまで通り、なるべくわかりやすくやっていきますので。
ていうか、わかりやすいのかな?こっちが心配だ(^^;
前のページ | 次のページ |