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 42package.loaded[modname]があればそれを返す(再読込はこれをnilにする)package.preload[modname]があればそれをローダとする (TODO: テスト)- なければ
package.path(デフォルト:?;?.lua;?/init.lua) を探してファイル内容をローダとする?がモジュール名相当
パスは.で区切られる - ローダにモジュール名
modnameを渡して実行する...で参照できる nilならrequireされていない - 返ってきたものを
package.loaded[modname]に入れる。 何も返ってこなければtrueを入れる package.loaded[modname]を返す