11/12/25 08:50:59.36 6cu7T9Y+
>>436
二つミスがある。
一つはfuncそのもの。
このfuncは、引数として与えられた文字列と数値を加工して返すものだと想像できる。
a.文字列については、"関数"と言う文字列を末尾に加えて返し、
b.数値については3倍して返す
そういう動作をするものだと考えられる。
function func(str, num)
return str.."関数", num*3
end
これが一番簡単な実装。欲を言えば引数チェックも欲しい。
function func(str, num)
if type(str)~="string" then NSOkBox("第一引数には文字列を指定してください。", "func"); NSEnd() end
if type(num)~="number" then NSOkBox("第二引数には数値を指定してください。", "func"); NSEnd() end
return str.."関数", num*3
end
二つ目のミスは、記述の順番。
Luaに限った話ではないが、プログラムは上から下に向かって実行される。
>>436 では、下の方でfuncを定義しているので、上の方ではまだfuncが未定義である。
なのにfuncを実行しようとしているので、「funcはnil(未定義)なのに、関数として実行しようとした」と言うエラーメッセージが出る。
順番を入れ替えるとこれは解消される。
NScripterでは、実行の前にラベルを解析してしまうので、これでも動くのだが、Luaではそうはいかない。