【问题标题】:Computercraft function that returns an array, use first element for boolean返回数组的Computercraft函数,使用第一个元素作为布尔值
【发布时间】:2020-04-07 11:47:15
【问题描述】:

已编辑以获取更多详细信息:

我想让一只乌龟坐在树苗前等待它长大,然后再砍掉它。它将日志与前面的项目进行比较,直到匹配为止。我目前使用的系统可以工作,但我希望有一种更简单的方式来编写它。

checkTarget = {
    forward = function(tgt)
        check = {turtle.inspect()} --creates table with first as boolean, second as information table
        local rtn = {false, check[2]}
        if type(tgt) == "table" then
            for k, v in pairs(tgt) do
                if check[2].name == v then
                    rtn = {true, v}
                    break
                end
            end
        elseif tgt == nil then
            return check[1]
        elseif check[2].name == tgt then
            rtn[1] = true
        end
        return rtn
    end,--continued 

这需要一个参数,一个字符串或一个字符串数组,以进行比较。当它检查前面的块时,它将详细信息保存到 rtn 中的第二个元素,第一个元素保存为默认值 false。如果字符串与被检查方块的名称匹配,则将rtn[1]更改为true并全部返回,也就是checkTarget.forward("minecraft:log")时底部的表格。

我的问题是,我目前正在制作一个一次性变量来存储从 checkTarget 返回的数组,然后调用该变量的第一个元素来获取它是否为真。我希望有一种方法可以将其包含在 if 语句中,而无需一次性变量 (tempV)

repeat  
    local tempV = fox.checkTarget.forward("minecraft:log")
    if tempV[1] then
        cut()
        fox.goTo({x = 0, y = 0, z = 0})
        fox.face(0)
    end
    tempV = fox.checkTarget.forward("minecraft:log")
until not run
{ 
 false, 
 { 
   state = { 
        stage = 0, 
        type = "birch", 
   }, 
   name = "minecraft:sapling", 
   metadata = 2 
  } 
}

【问题讨论】:

  • 请改进您的帖子。目前尚不清楚您的代码应该做什么。你提供了一张桌子,但你的解释对我来说没有意义。什么是 checkTarget.forward?使用名称“minecraft:sapling”搜索后,它会返回提供的表吗? “这不起作用”是什么意思有错误吗?请阅读How to Ask
  • 你需要数组的第二个元素,然后是“名称”的元素吗?那么:print ( array[2]["name"] )
  • 编辑了原帖,希望更好。我试图不在原始文件中提供太多不需要的信息

标签: lua computercraft


【解决方案1】:

而不是

local tempV = fox.checkTarget.forward("minecraft:log")
if tempV[1] then
end

你可以的

if fox.checkTarget.forward("minecraft:log")[1] then
end

然后调用变量的第一个元素来获取它是否为真或 不是。

使用tempV[1],您不是在调用第一个元素,而是在为其编制索引。

要调用某些东西,您必须使用调用运算符(),这没有意义,因为布尔值不可调用。

【讨论】:

  • 谢谢!可以发誓我试过了,但是当我再次尝试时,它起作用了。一定是打错了什么
猜你喜欢
  • 2021-01-30
  • 2020-07-24
  • 2014-07-13
  • 2021-03-29
  • 2021-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多