ComputerCraftチートシート

リファレンスへのリンクは和訳の方を張ります。

Term I/O

多分 src/main/resources/assets/computercraft/lua/bios.lua にある程度乗っている

cast

演算子

Lua リファレンスマニュアル

if文

Lua リファレンスマニュアル

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"}

ループ

Lua リファレンスマニュアル 2.4.4-2.4.5

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

Lua リファレンス 5.3 モジュール

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

参考リンク

comments powered by Disqus