« テンションのあるケーブル(スプライン)の表現テスト | トップページ | 今は、何モード?ポリゴンモード?それとも、ポイントモード? »

XPressoのC.O.F.F.E.E.ノードの入出力変数

XPressoのC.O.F.F.E.E.ノードですが、追加された入力端子の値を取得するには、端子名の変数から取得するわけですよね。
でもC.O.F.F.E.E.で変数を使うには、「var」で宣言しますが、C.O.F.F.E.E.ノードでは入力端子変数は宣言済みになるわけですよね…

では、ここでテストです。C.O.F.F.E.E.ノードの入出力を把握している人は読み飛ばしてください。

Coffeenode_inout_01

test_COFFEEノードは、ただスルーアウトしているだけです。

/*
test_1
2009.3.26
*/


main()
{
  out_test = in_test;
}

全く問題ありませんね。
既に宣言済みなので、

/*
test_2
2009.3.26
*/


main()
{
  var out_test , in_test;

  out_test = in_test;
}

と、この様に宣言しなくてもいいわけです。

次のコードは一見、問題が無いように見えますが…

/*
test_3
2009.3.26
*/


main()
{
  out_test += in_test;
}

out_test = out_test + in_testというわけだけど…
でも、これはC.O.F.F.E.E.エラーが出ます。

入力変数も出力変数も宣言されてはいますが、出力変数は初期化されていませんので、0.0でも[0.000000 , 0.000000 , 0.000000]でもないのです。
出力変数は、代入されるまで「nil」なのです。

/*
test_4
2009.3.26
*/


main()
{
  println("in_test : " , in_test);
  println("out_test : " , out_test);
}

in_test : 100.000000
out_test : nil

そう言えば、宣言済みの入出力変数を再宣言した「test_2」は実行すると、どうなんだろう?

/*
test_2
2009.3.26
*/


main()
{
  var out_test , in_test;

  out_test = in_test;
}

Coffeenode_inout_02

100が入力されていますが、出力された結果は0です。
理にかなっているだろうか?
少し、わかりづらいですね。

/*
test_5
2009.3.26
*/


main()
{
  var out_test , in_test;

  println("in_test 1 : " , in_test);
  println("out_test 1 : " , out_test);

  out_test = in_test;

  println("in_test 2 : " , in_test);
  println("out_test 2 : " , out_test);
}

in_test 1 : nil
out_test 1 : nil
in_test 2 : nil
out_test 2 : nil

入力は、100はなく「ni」lにout_testも「nil」と…でも出力は0である。
コンソールの出力は、理解できるが、ノードの出力が0とは…nilは0になるのか?では出力をnilの状態にすることができないと言う事になるが…

まぁ、入出力変数は再宣言しては、いけないと言うことだ。

ちょっと待てよ…

入出力変数は、グローバル変数って事はないだろうか…ないよね…

/*
test_6
2009.3.26
*/


test_func()
{
  println("in_test : " , in_test);
 
println("out_test : " , out_test);
}


main
()
{
  out_test = in_test;

  test_func();
}

in_test : 100.000000
out_test : 100.000000

なんと、今の今まで知らなかったが…
入出力変数は、グローバル変数だったと言う事だ…

入出力変数がグローバル変数だとわかってしまえば、もう迷う事はないだろう。

でも、まだ疑問がある。
型を指定された出力端子が追加され、出力変数も宣言されているわけだけど…
出力変数に違う型の数値を代入したらどうなるの?

/*
test_7
2009.3.26
*/


main
()
{
  out_test = "test! test!!";
}

出力端子は実数だけど、出力変数には文字列を代入と…

Coffeenode_inout_03

コンソールにはエラー表示もなく、COFFEEエディタも「エラーはありませんでした!」で…
結果は0かぁ…

|

« テンションのあるケーブル(スプライン)の表現テスト | トップページ | 今は、何モード?ポリゴンモード?それとも、ポイントモード? »