日本でハリウッドVFXを制作! 「経産省アイディアボックス」 結果:  
●まとめエントリはこちら ●FAQ ●お問い合わせは左のメールフォームから

2009年2月11日水曜日

Mel スクリプティング (2)

続いて、else文,
例をそのまま入力し、変数$xに値30を代入しておいた。
今回はエラーもなく、スムースにいった。

$x =30;

if ($x >10) {
print ("It's greater than 10! \n");
print ("Run!!!\n");
}

else {
print ("It's not above 10.\n");
print ("It's saef... for now.\n");
}

------------------------
ここでひとつ疑問がでてきた。

print文では文字列を扱う時、()内にさらに""で囲むのか?

さっそくヘルプをみてみると
print文は()内を表示その中には数値や変数をいれておくことができるが
文字列を表示させたい時は、その文字列を""でくくる必要がある。
なるほど、そういうことか、
()内は引数であり、数値か文字列、もしくは変数をおくことができる。
文字列の場合は、かならず""で囲んでおかなくてはいけないのが基本となっている。
ここまでの練習では、printの()内には、毎回文字列をいれていたので、""が必要だったのだ。
疑問に対する答えは[Yes]である。


このヘルプにひとつ気にかかる注記が。。。。
[配列は文字列ではないため(文字列を含むことはできますが)、文字配列では + 演算子を使用できません。]というのがいま一つ理解できない。

文字配列というのは配列に文字列がはいったものだと思うのだが、それをつかって+でほかの文字列とくっつけることはできないということらしいのだが、
なにか、確信がもてない。

配列は、たとえ中に文字列が代入されていても、文字列としては扱うようなことはない。
配列は文字列としては、中に何がはいっていようと文字列ではない。
なので、+演算子をつかってふたつの文字列をつなぐように、文字の入った配列をつなぎあわせようとしてもエラーになってできません。
ということらしい。
では変数であれば文字列としてあつかわれるのか?
string $s = "Hello There";
print ($s+" are the lights");

実行して表示された文字
Hello There are the lights

なるほど、では配列では?
string $a[];
$a = eval("ls -lights");
print ($a +" are the lights");


実行。。。
// Error: print ($a +" are the lights"); //
// Error: Line 3.29: Illegal operation "+" on data of type string[]. //


たしかにエラーが返ってくる。
似ているが、たしかに配列と、変数ではあつかいが違うようだ。

0 件のコメント:

コメントを投稿