ComputerCraftチートシート
Sep 17, 2018 · 2 minute read · Commentsminecraftcomputercraftlua
リファレンスへのリンクは和訳の方を張ります。
Term I/O
多分 src/main/resources/assets/computercraft/lua/bios.lua にある程度乗っている
write(Mixed Data)
: 改行なし出力 CC Wikiprint(string text)
: 改行あり出力 CC Wikistring read([char replacement [, table history [,function auto complete ]] ])
: 入力 CC Wiki
cast
演算子
- 算術演算子
+
,-
,*
,/
,%
,^
- 関係演算子
==
,~=
,<
,>
,<=
,>=
- 論理演算子
and
,or
,not
- 文字列連結
..
- 長さ演算子
#
if文
if cond then
proc()
elseif cond then
proc()
else
proc()
end
関数
function myFunc(a,b,...)
print("a: " .. a .. "\nb: " .. b .. " other\n", ...)
return proc()
end
function t.a.b.c:f (...)
-- 暗黙の引数selfが渡される
proc()
end
多値
...
で表す Lua リファレンスマニュアル 2.5 式
select(1,...) -- 最初
select("#", ...) -- 個数
{...} -- テーブル化
local a, b = ... -- 代入 足りない文はnilになる
テーブル/配列
配列はテーブル
{1,5,10,50,100,key="key"}
ループ
while cond do
proc()
end
repeat
proc()
until cond
for i = start, end, step do
proc()
end
走査
大抵は pairs(table), ipairs(array) で事足りると思う。
for k,v in pairs(table) do
-- すべてのキーが操作される
end
for i,v in ipairs(array) do
-- [1]...[n] のみ走査される
end
カスタム走査
汎用for文の等価コードを参考に作成する
TODO: カスタムコンテナをここに
外部ファイル読み込み
-- module.lua
return 42
-- load
local mod = require("module")
print(mode) -- output 42
package.loaded[modname]
があればそれを返す(再読込はこれをnil
にする)package.preload[modname]
があればそれをローダとする (TODO: テスト)- なければ
package.path
(デフォルト:?;?.lua;?/init.lua
) を探してファイル内容をローダとする?
がモジュール名相当
パスは.
で区切られる - ローダにモジュール名
modname
を渡して実行する...
で参照できる nilならrequireされていない - 返ってきたものを
package.loaded[modname]
に入れる。 何も返ってこなければtrue
を入れる package.loaded[modname]
を返す