blog

例で学ぶLua言語(3)-Luaデータ構造

Luaにはテーブルという基本的なデータ構造しかなく、配列やクラスなど他のデータ構造はすべてテーブルとして実装することができます。...

Jan 18, 2020 · 3 min. read
シェア

1.はじめに

Luaにはテーブルという基本的なデータ構造しかなく、配列やクラスなど他のデータ構造はすべてテーブルとして実装することができます。

2.テーブル添え字

例 e05.lua

-- Arrays 
myData = {} 
myData[0] = 「foo” 
myData[1] = 42 
-- Hash tables 
myData[バー”] = バズ” 
-- Iterate through the 
-- structure 
for key, value in myData do 
print(key ..  =  .. value)     end 

出力結果

0=フー

1=42

バー=バズ

手続きの説明

まず、テーブル myData={} を定義し、そこに添え字として数値を使用して 2 つの値を代入します。 これはC言語の配列に似ていますが、配列とは異なり、配列の各要素は同じ型である必要はありません。

プログラムの後半では、文字列を添え字として使用して、テーブルに別の要素を追加します。 このテーブルは、STLのマップによく似ています。テーブルの添え字には、nil値を除き、Luaがサポートする基本的な型を使用できます。

テーブルのメモリフットプリントに関するLuaの処理は、以下のコードに示すように自動的に行われます。

a = {} 
a["x"] = 10 
b = a -- `b' refers to the same table as `a' 
print(b["x"]) --> 10 
b["x"] = 20 
print(a["x"]) --> 20 
a = nil -- now only `b' still refers to the table 
 
b = nil -- now there are no references left to the table 

bとaはどちらも同じテーブルを指し、1ブロックのメモリしか占有しません。

b=nil に達すると、テーブルを指す変数がなくなるため、Lua は自動的にテーブルを解放します。

3.テーブルネスティング

テーブルは、次の例のように入れ子にすることもできます。

例 e06.lua

-- Table 'コンストラクタ' 
myPolygon = { 
color=「ブルー”, 
thickness=2, 
npoints=4; 
{x=0, y=0}, 
{x=-10, y=0}, 
{x=-5, y=4}, 
{x=0, y=4} 
} 
-- Print the color 
print(myPolygon[ ”]) 
-- Print it again using dot 
-- notation 
print(myPolygon.color) 
-- The points are accessible 
-- in myPolygon[1] to myPolygon[4] 
-- Print the second point’s x 
-- coordinate 
print(myPolygon[2].x) 

手続きの説明

まずテーブルを作成しますが、前の例とは異なり、テーブルコンストラクタの{x=0,y=0}の中に、これはどういう意味ですか? これは実際には小さなテーブルで、大きなテーブルで定義され、小さなテーブルのテーブル名は省略されています。

最後の行、myPolygon[2].xは、大きなテーブルの中の小さなテーブルにアクセスする方法です。

Read next

グーグル、アンドロイド版グーグル検索の新バージョンをリリース

Googleは今日、Android用のGoogle検索の新バージョンをリリースしました, Googleの公式ブログによると、アップデートは、いくつかの新しいカードが追加されました, しかし、公式ブログが言及しなかったことは、Google検索の音声検索機能は、会話コマンドをサポートするようになったことです.この場合、Google検索にテキストメッセージを送りたいと叫んでも、自動的にSMSアプリが開くだけです。

Jan 17, 2020 · 1 min read