なぜLuauを使うのか?
CoddyのLuaジャーニー「Luau入門」セクションの一部。レッスン 2/80。
Luauの型システムには、開発をより安全かつ効率的にする3つの大きな利点があります。
エラーを早期に発見:型チェッカーは、コードの実行前、編集中にコードを解析します。よくあるLuaのバグを考えてみましょう。数値が期待される場所にnilを渡す場合です。
-- Lua: これについては何の警告も出ません
local function calculateTotal(price, tax)
return price + tax
end
print(calculateTotal(nil, 0.1))
-- ✗ 実行時エラー: nil に対して算術演算を行おうとしました通常のLuaでは、このクラッシュが起きるのは問題のある呼び出しが実際に実行されたときだけです。ユーザーの目の前で起きるかもしれません。さらに悪いことに、Luaではバグが完全に隠れてしまうこともあります。"50" + 0.1は文字列を暗黙に変換して50.1を返します……文字列が数値でなくなるその日までは。Luauの型注釈を使えば、この間違いはすぐに指摘されます。
local function calculateTotal(price: number, tax: number)
return price + tax
end
calculateTotal(nil, 0.1) -- ✗ 編集中の型エラー: nil は数値ではありませんコードの可読性向上:型注釈はドキュメントの役割を果たします。price: numberを見れば、関数が何を期待しているかが自分にもチームメイトにも正確にわかります。推測したり、実装を調べたりする必要はありません。
開発ツールの強化:エディターが各変数の型を把握しているため、正確な自動補完、安全なリファクタリング、よりスマートなナビゲーションを利用できます。型が付いた値の後にドットを入力すると、利用可能なものだけがエディターに表示されます。
チャレンジ
簡単calculateTotalの両方のパラメーターにnumber型を指定します。
- 最初の行で、
(price, tax)を(price: number, tax: number)に変更します。 - 末尾の呼び出し
calculateTotal(80, 8)はそのままにします。
Run Codeを押すと、出力に88が表示されます。
自分で試してみよう
local function calculateTotal(price, tax)
return price + tax
end
print(calculateTotal(80, 8))
Luau入門のすべてのレッスン
自分で練習してみよう: Luauオンラインコンパイラ