2014年9月15日月曜日

Maxscript その10 「Maxscript 式ベース」

詳しくはリファレンスの「名前、リテラル定数、および式>式>式」を参照

リファレンスによると「MAXScript は式ベースの言語です。つまり、MAXScript 言語のあらゆる構文は式で結果を生成します。」とある。一般的に「式」と聞くと

x = 2+1

のような物を想像するが、「2+1」はMaxscriptでは<simple_expr>に分類されるようだ。変数に代入した場合は<assignment>

言い方が適しているか分からないけど、式の生成する結果を戻り値と呼ぼうと思う。一般的に戻り値というと関数を思い浮かべるけど、全部に戻り値のようなものがあるのはちょっと不思議な感じがする。

maxscriptの式には以下のものがあるようだ(1つ1つの名前とか種類を覚える必要はないと思う。概念が理解されれば、自然と身に付く気がするので)。リファレンスで<expr>と出てきた場合、そのいずれかを指しているようだ。
<simple_expr>
<variable_decls>
<assignment>
<context_expr>
<if_expr>
<while_loop>
<do_loop>
<for_loop>
<loop_exit>
<case_expr>
<try_expr>
<function_def>
<function_return>
<struct_def>
<max_command>
<utility_def>
<rollout_def>
<tool_def>
<rcmenu_def>
<plugin_def>
エディターでスクリプトを記述して実行される際にリスナーに表示されるのは式1つ1つの戻り値のようだ。(一般的な言語はアウトプットの処理をしない限りは基本的には何もアウトプットされないイメージがある。デフォルトでオフにしたいんだけど、どこで設定するのかな?)
OKと表示があるが無事スクリプトが実行されたのを意味しているのではなく、maxscriptではOKもOK値というれっきとした値の1つのようである「特殊データ値>OK値」。for式の答え=戻り値がOK。

じわじわくる・・・

ほぼすべての式(命令)は何かしらの答えを発生するので、その答えを変数に代入出来るようだ。

a = for i = 1 to 10 do print a
とか
b = if x >10 then 10 else x
とか

0 件のコメント:

コメントを投稿