第2回 スクリプト言語Luaの書き方(基本概念)

あおや
あおや

ロブロックスでは、Luaというスクリプト言語で書かれていることは分かったけど、書き方のルールが分からないな。

もっけ
もっけ

オッケー。ここでは、ロブロックスを使ったLuaの基本的な書き方を説明していくよ。

コメントの書き方

Luaでのコメントの書き方について説明するよ。
プログラムは、ルールに沿って書かないといけないんだ。コメントを書くときもルールに沿ってね。

  • 行末コメント
    ハイフン(-)を2つ続けると行末までがコメントになるよ。
-- 日本語のコメント
  • 複数行コメント
    – -[[ と ]] で囲むと複数行がコメントになるよ。
--[[
コメント
部分
]]

変数

変数とは、数値や文字などを入れる入れ物のことと思ってください。Luaは、動的型付け言語(変数に型がない)であり、変数に入れる値に独自の型があります。

値には8種類の基本型があります。

  • 数値(number)
    integer(整数)とfloat(実数 (浮動小数点数))を表すことができます。
    例:number = 1
      number = 3.14
  • 文字列(string)
    文字列を入れることができます。文字列は、””(ダブルクォーテーション)または”(シングルクォーテーション)で囲みましょう。文字列には、日本語を入れられるよ。
    例:string = “こんにちは”
    string = ‘こんばんは’
  • 関数(function)
    関数を呼び出して、結果を得ることができます。function は、関数であることを宣言しています。Keisan は、処理を実行してくれる関数名です。
function Keisan(a, b) -- aに1, bに10が入る。このa, b を関数の引数という。
	return a + b  -- return でa+bの計算結果を返す。
end

result = Keisan(1, 10) -- result にKeisanの結果を入れる。
print("結果は、" .. result)  -- 実行結果は、11。
  • ブーリアン(boolean)
    trueまたはfalseがあります。trueが成功したとき、falseが失敗したときなどに使います。
    例:trapFlag = true
  • ニル(nil)
    nilは、まだ値が入っていない空の状態を表すために使います。これは、データアクセスした際にnilであれば、まだ値が入っていないと判断することができます。
    例:trapPart = nil
  • テーブル(table)
    唯一のテーブル構造です。nilを除く、あらゆるデータを格納することができます。
-- 配列
tbl = {1, 2, 3, 4, 5}
print(tbl[0])  -- 実行結果は、何も入ってないのでnil
print(tbl[1])  -- 実行結果は、1
print(tbl[5])  -- 実行結果は、5

-- 連想配列(インデックス(キー名)と値で分かれている。インデックスで参照することで値が取れる)
humanTbl = {}
humanTbl["名前"] = "もっけ"
humanTbl["身長"] = 180

print( "名前は、" .. humanTbl["名前"]  ) -- 実行結果は、名前は、もっけ
print( "身長は、" .. humanTbl["身長"] .. " センチ") -- 実行結果は、身長は180センチ

---- 連想配列では、インデックスを値にして扱うことも可能
humanTbl = {}
humanTbl[1] = "もっけ"
humanTbl[2] = 180

print( "名前は、" .. humanTbl[1]  ) -- 実行結果は、名前は、もっけ
print( "身長は、" .. humanTbl[2] .. " センチ") -- 実行結果は、身長は180センチ
  • ユーザデータ(userdata)
    C言語のデータを Lua 変数に格納できるようにするために提供されています。userdata には 2 種類あります。Lua によって管理されるメモリ ブロックを持つオブジェクトであるfull userdataと、単なる C ポインター値であるlight userdataです。
  • スレッド(thread)
    処理をスレッドという単位に分けて並列処理し、処理速度を向上させることができます。
    スレッド処理はコルーチンであり、処理を中断・再開することができます。

予約語

予約語とは、Luaが標準的に使う変数名があるので予約語と同じ変数名は指定できません。
Luaは小文字と大文字を区別するので、変数名にandは使えませんが、ANDは使えます。ただし、混乱するのでやめておきましょう。

andbreakdoelseelseifend
falseforfunctiongotoifin
localnilnotorrepeatreturn
thentrueuntilwhile
予約語の一覧

メモリ管理

Lua は、ガベージコレクションがメモリ管理を実行します。ガベージコレクションとは、メモリの確保と解放を自動的に行ってくれます。
そのため、新しいオブジェクトにメモリを動的に割り当てたり、オブジェクトが不要になったときにメモリを解放したりする必要はありません。Lua が使用するすべてのメモリは、文字列、テーブル、ユーザーデータ、関数、スレッド、内部構造などの自動管理の対象となります。

コメント

タイトルとURLをコピーしました