Luaのエラーの読み方
スクリプト開発で必ずといっていいほど悩まされるのが、エラー。デバッグウィンドウに英語でよく分からん文が出てきてどうしたらいいのか.....とならないようにここでしっかり確認です。 実はエラーには一定の書式がある
エラーをよく観察していると、いつも同じような形の文字が出てくるなーとなると思います。下のような感じです。
[string "ここにスクリプト本文の一部"]:数字:なんかようわからん英語
この数字とようわからん英語の意味さえ分かればなんとかなるってわけです。
数字
これはエラーの起きている行数を表します。
@付きスクリプトの場合、当該スクリプトの@の一行下から数えます。
ようわからん英語
これはまあそこそこの種類のものがあります。
syntax error near '文字'
syntax ― 構文
near ― 近く
<文字>の近くで文法的エラーが起きてるよ!ということ
'文字1' expected near '文字2'
expected ― 期待してた
<文字1>が<文字2>の近くにないよ!ということ
よく<文字2>には"<eof>"というものが入っていますが、これはスクリプトの一番最後を意味します。括弧が閉じられてなかったりすると出てくるエラーです。
unexpected symbol near '文字'
unexpected ― 期待してなかった
symbol ― 文字
<文字>の近くによう分からんものがあるよ!ということ さっきと逆だね
bad argument #数字 to '関数名' (型1 expected, got 型2)
bad ― ダメな
argument ― 引数
got ― もらった
<関数名>の第<数字>引数の引数、型1じゃなくて型2になってるよ!ということ
attempt to perform arithmetic on a 型名 value
attempt ― 試みる
perform arithmetic ― 算術演算をする
value ― 値
<型名>の値を算術演算しようとしちゃったよ!ということ
ここでの算術演算とは、+だったり-だったり そういうもの
attempt to compare nil with number
compare ― 比べる
nilと数字とを比較しようとしちゃったよ!ということ
attempt to concatenate a nil value
concatenate ― 結合する
..(結合演算子)をnilと一緒に使おうとしたよ!ということ
attempt to perform arithmetic on global '変数名' (a nil value)
attempt to perform arithmetic on local '変数名' (a nil value)
<変数名>がnilなのに計算しようとした → 定義されてないよ!ということ
attempt to call global '関数名' (現在の型)
<関数名>を呼び出そうとしたけど関数として使えないよ!ということ
初めから定義されていない関数(例:undef())を呼び出せば a nil value
思いつき次第追加