lua how to
2669 ワード
下luaの使用をまとめましたが、少し乱れていて、完璧ではありません.先に投稿してください.これも自分の更新の原動力になります.結局、誰かが見ています.
1.tableを作成し、テーブルの要素を設定します.
以上のコードはスクリプトと同等です.
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スクリプトで:
出力3
3.2 Cコードの中で:
indexはtableが存在するスタックの位置です.
この関数は、文字列またはuserdataの長さを取得するためにも使用できます.
4.ファイルへのアクセス方法:
file:readの使い方:
「*n」:ファイルにも文字列として保存されていることに注意して、数値を読み込みます.
「*a」:現在位置からすべてのファイル内容を読み込みます.
「*l」:パラメータを指定しないreadがread('*l')に相当する行の文字列を読み込みます.
5.テーブルの要素を取得する
出力:
abc
説明:keyが指定されていないvalueの場合、デフォルトのkeyは整形であり、1から計算が開始されます.
6.lua APIでluaスクリプトの関数を呼び出す方法
スクリプト:
Cコード中:
出力:
get return value: how12314
7.マルチタスクの使用方法:
8.スタック内の要素を削除する方法:lua_を介してremoveは、スタックで指定したインデックスの要素を除去します.
具体的な例は、lua APIを介してluaスクリプトの関数を呼び出す方法です.
9.複数行コメントの追加方法
複数行のコメントに対して、各行の開始に「--」を追加しないようにするにはどうすればいいですか?次の方法を使用できます.
--[[
comment 1
comment 2
...
]]
複数行のコメントは「--[[」で始まり、「]」で終わります.
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
...
]]
複数行のコメントは「--[[」で始まり、「]」で終わります.