You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Roblox调用table.remove报错:参数2期望数字类型实际为字符串

报错根因

table.remove的第二个参数必须传入待删除元素的数字类型索引,你的代码中choice变量存储的是对应索引位置的字符串内容,不是索引本身,传入字符串就触发了number expected, got string的类型错误。
除此之外代码还有两个隐藏bug:

  • 删除第一个元素后重新随机得到的新choice没有赋值给文本标签,对应内容不会显示
  • 没有做表为空的边界判断,当所有字符串被移除后,math.random(1, #textTable)会等价于math.random(1, 0),触发参数范围错误
修复后代码
local textTable = {
    "What is this?",
    "What is that?",
    "What would match this statement?",
    "Pick the option that would match the image."
}

while wait(2) do
    -- 表为空时终止循环,避免边界报错
    if #textTable == 0 then
        break
    end

    -- 先生成随机数字索引,再通过索引取对应文本
    local randomIdx = math.random(1, #textTable)
    local choice = textTable[randomIdx]
    script.Parent:WaitForChild("ComputerGui").Game1.TextLabel.Text = choice
    -- 传入数字索引完成删除,不要传字符串内容
    table.remove(textTable, randomIdx)
end

如果你的预期是每次循环连续展示两个不重复的文本,只需要在第一次删除操作后,判断表长度不为0时,再走一遍「生成随机索引-取文本赋值-按索引删除」的流程即可,原代码里第二次随机只给choice赋值没同步更新文本组件,属于无效逻辑。

内容的提问来源于stack exchange,提问作者TrulyBlue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 09:03:50