原典:http://compasstech.com.au/TNS_Authoring/Scripting/script_tut3.html
レッスン3.3「条件ステートメント」
Luaスクリプトの入門編でもう一つ紹介する必要のあるコマンドがあります。それは、if...then...else...endという条件ステートメントです(末尾をendifにすることを除けばTI-Nspireでも同じ構文が使えます)。
何らかの方法で最初の行と最後の行とを強調表示する場合を考えてみましょう。たとえば色を変えたり太字にしたりするわけです。これは簡単です。まず、これまで作成してきたスクリプトを一部以下のように変更します(訳註:gc:setFont("sansserif", "r", 10)およびgc:setColorRGB(158, 5, 8)をforループに入れる)。
for k = 1, linecount do
gc:setFont("sansserif", "r", 10)
gc:setColorRGB(158, 5, 8)
table[k] = (var.recall("line"..k) or "Line #"..k)
strwidth = gc:getStringWidth(table[k])
strheight = gc:getStringHeight(table[k])
gc:drawString(table[k], w/2 - strwidth/2 ,h*k/(linecount+1) + strheight/2)
end
あとは、setFontコマンドおよびsetColorコマンドに条件を追加するだけです。たとえば以下のようにします。
if k == 1 or k == linecount then
gc:setFont("sansserif", "b", 10)
gc:setColorRGB(20, 20, 138)
else
gc:setFont("sansserif", "r", 10)
gc:setColorRGB(158, 5, 8)
end
等号はダブル・イコール(==)で表現しますので、気をつけてください。たとえばk = 1のようなシングル・イコールは、kに1を代入する(kに1を割り当てる、k = 1と定義する)という意味です。これは注意してください。
それ以外は単純なはずです。
これでまた一つ、レッスンが終わりました。またいろいろ試してみてください。
次のレッスンでは、Luaウィンドウに実際に入力する方法を学びます。これは、個人学習用のアプリケーションや試験用のアプリケーションを制作するときの基礎となります。
----------------------------------------------------------------------
(訳註)今回の実行例:
先頭、末尾の各行が強調表示された。変数line2に代入した値(ここでは文字列)がすぐにスクリプト画面に反映された。