lua how to

2669 ワード

下luaの使用をまとめましたが、少し乱れていて、完璧ではありません.先に投稿してください.これも自分の更新の原動力になります.結局、誰かが見ています.
1.tableを作成し、テーブルの要素を設定します.
 lua_newtable(L);
 lua_pushinteger(L,1);
 lua_pushstring(L,"abc");
 lua_settable(L,-3);
 lua_setglobal(L,"t");

以上のコードはスクリプトと同等です.
t = {'abc'}
または:t={}
t[1] = 'abc'
注意lua_settableは2回スタックを作成するので、呼び出すと:
lua_setglobalの場合、新しく作成したtableはスタックの上部にあります.
 
2.tableの要素を移動する方法:
2.1スクリプト:
local tt = {1,2,3}
for k,v in ipairs(tt) do
    print(k,v)
end
 
3.tableの長さを取得する方法:
3.1スクリプトで:
t = {1,2,3}
print(#t)

出力3
3.2 Cコードの中で:
lua_objlen(L,index)

indexはtableが存在するスタックの位置です.
この関数は、文字列またはuserdataの長さを取得するためにも使用できます.
4.ファイルへのアクセス方法:
f = io.open('test.txt,'r')
for line in f:lines() do
 print(line)
end
f:close()

file:readの使い方:
「*n」:ファイルにも文字列として保存されていることに注意して、数値を読み込みます.
「*a」:現在位置からすべてのファイル内容を読み込みます. 
「*l」:パラメータを指定しないreadがread('*l')に相当する行の文字列を読み込みます.
 
5.テーブルの要素を取得する
t = {'abc',x=123,'def'}
print(t[1])

 
出力:
abc
説明:keyが指定されていないvalueの場合、デフォルトのkeyは整形であり、1から計算が開始されます.
6.lua APIでluaスクリプトの関数を呼び出す方法
スクリプト:
function f(a,b,c)
    return a..b..c
end
t = {x=1}

Cコード中:
 lua_getglobal(L,"f"); /* function to be called */
 lua_pushstring(L, "how");                        /* 1st argument */
 lua_getglobal(L, "t");   /* table to be indexed */
 lua_getfield(L, -1, "x");        /* push result of t.x (2nd arg) */
 lua_remove(L, -2);                  /* remove 't' from the stack */
 lua_pushinteger(L, 14);                          /* 3rd argument */
 lua_call(L, 3, 1);     /* call 'f' with 3 arguments and 1 result */
 printf("get return value: %s
",lua_tostring(L,-1));

出力:
get return value: how12314  
7.マルチタスクの使用方法:
co = coroutine.create(function() print("hello,world") end)
coroutine.status(co)
print(coroutine.status(co))
--suspended
coroutine.resume(co)
--hello,world
print(coroutine.status(co))
--dead
 

8.スタック内の要素を削除する方法:lua_を介してremoveは、スタックで指定したインデックスの要素を除去します.
具体的な例は、lua APIを介してluaスクリプトの関数を呼び出す方法です.
9.複数行コメントの追加方法
複数行のコメントに対して、各行の開始に「--」を追加しないようにするにはどうすればいいですか?次の方法を使用できます.
--[[ 
comment 1
comment 2
...
]]
複数行のコメントは「--[[」で始まり、「]」で終わります.