原典:
http://compasstech.com.au/TNS_Authoring/Scripting/script_tut2.html
レッスン2.2:Luaのforループ
標準的なfor..end構造(TI-NspireのFor.. EndFor構造)についてある程度知っているという前提で説明を進めます。Luaの場合、各構造の末尾はEndForでもEndIfでもなく単にendです。
TI-Nspireのループ For k, 1, 10 temp := k* (k+1) EndFor |
Luaのループ for k = 1, 10 do temp = k* (k+1) end |
どちらの場合も、変数tempは最後に110という同じ結果になります。Luaの構文はTI-Nspireに似ています。Luaはfor k = from, to [,steps] doという構文です。TI-Nspireの構文はFor k, from, to [,steps] です。TI-Nspireとの違いに注意してください。=、do、endというところが違っています。また、すべて小文字でなければならないという点も違います。どちらの構文もステップ・サイズは指定できます。繰り返しますが、Luaではすべて小文字のコマンドを使います。
下の実行例では、k = 1からk = 10まで実行して10行分の生成と配置とを行っています。こうした構造を使えば、いとも簡単に何行でも表示できます(あくまで合理的な範囲内で、ですが)。
前回のレッスンの簡単な例で学びましたので、各コマンド・ラインの意味はわかるでしょう。フォント、色、文字列幅、文字列高さを定義するコマンド・ライン、文字列を表示するコマンド・ラインが並んでいます。今回はさらに変数tableの各行を作成するコマンド・ラインを追加します。ここではtable[k]という構文で変数tableのk番目の要素を参照します。つまりtable[1]が最初の行や列になるわけです。これはTI-Nspireでリストの要素を定義するのとまったく同じ方法です。
-------------------------------------------------------------------
(訳註)今回の実行例:
table[k] = "Line #"..kの“..”は文字列を連結する演算子。
h*k/(linecount + 1)の意味:
たとえば全部で5行の文字列を縦方向に均等に並べる場合は、縦方向を6分割するわけであるから、(行数の変数linecountに1を加算した数)で(ウィンドウの縦方向の長さであるh)を割って、行番号に応じて順番にkを乗じている。