mcpField
R
roblox-luau-core

roblox-luau-core

github.com/tabooharmony开发1382.0k 次安装2 周前更新
代码仓库

关于 roblox-luau-core

介绍 Luau 语义以及从 JavaScript、Python 转写时的常见陷阱,供编写或审查 Luau 的开发者参考,并以简明规则和示例说明运行时行为与语法。

主要功能

  1. 01真值与相等规则
  2. 02表与迭代行为
  3. 03Luau 语法和字符串模式
  4. 04二进制数据与编码指引
  5. 05JavaScript 和 Python 转写陷阱

适用场景

  1. 01核对 Luau 语言行为
  2. 02将 JavaScript 代码转写为 Luau
  3. 03审查跨语言假设

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/tabooharmony/roblox-brain --skill roblox-luau-core

安装后在 Claude Code 中输入/roblox-luau-core确认已加载。

附带文件references/full.md

详细介绍

Luau 核心语言

何时加载

用于 Luau 语义以及 JS/Python 翻译。类型:roblox-luau-types;生命周期:roblox-luau-patterns;引擎 API:领域技能。

快速参考

  • 只有 false 和 nil 是假值。0、"" 和 {} 都是真值。
  • 相等比较不会进行类型转换。0 == "0" 为 false。不等运算符是 ~=。
  • 数组约定从 1 开始索引。只有不存在 nil 间隙的序列中,#array 才有意义。
  • 将 nil 赋给表会移除对应键;赋值表会复制引用;table.clone 是浅拷贝。
  • 字典的迭代顺序未指定。不要让行为依赖于顺序。
  • 动态键需要使用方括号:record[field]。点语法使用字面标识符。
  • 缺少的参数会变成 nil;多余的返回值和参数可以被丢弃。
  • 当 a 可能是假值时,优先使用 if 表达式,而不是 condition and a or b。
  • 局部变量从声明处开始生效;repeat 中的局部变量作用域延伸至 until。相互递归时需提前声明。
  • Luau 字符串模式不是正则表达式。其语法和功能各不相同。
  • 反引号插值和 .. 均有效。在热点循环中,应一次性拼接多个片段。
  • NaN 不等于自身,且会影响 </> 的判断;使用 x ~= x 检测。
  • 二进制数据使用 buffer 库:大小固定、偏移量从 0 开始,并显式指定读写宽度。避免使用 buffer.readinteger/writeinteger(它们是存根,并未在运行时发布)。
  • 对于 Base64、哈希或压缩,请使用 EncodingService(处理缓冲区而非字符串;JSON 使用 HttpService)。详情请参阅完整参考。
local label = if enabled then "On" else "Off"
local message = `{name}: {score}`

local byId: {[number]: string} = {}
byId[userId] = name

for index, value in values do
    print(index, value)
end
翻译陷阱
  • JavaScript 的 ===、!==、null、可选链、展开语法、箭头函数和数组方法都不是 Luau 语法。
  • Python 的 None、从 0 开始的列表索引假设、列表推导式、异常和隐式元组行为都不能直接转换。
  • x or fallback 检查的是真值,而不只是是否缺失。它会替换有效的 false 值。
  • typeof(value) 可识别 Roblox 数据类型;type(value) 会返回底层 Luau 类型类别。
审查

确保 Luau 语法有效、没有 nil 间隙、不假设字典顺序、没有意外别名、不混用其他语言的语法,也没有会隐藏 false 或 nil 的回退逻辑。

详细的语言陷阱和翻译示例:references/full.md

评论

支持 Markdown