if语句在Lua中无法正常工作。

下面是我的代码。我在玩 Tekkit 并且想控制水流。棕色线上有红石信号,但黑色线上没有,但是它仍然输出“ERROR!”。有人知道我的问题是什么吗?

在 Lua 代码中:

shell.run("clear")
brown = rs.testBundledInput("back", colors.brown)
black = rs.testBundledInput("back", colors.black)
t = true
f = nil

if brown == t and black == f then
  redstone.setBundledOutput("back", restone.getBundledOutput("back") -colors.brown)
  print("所有水都在流动。")
  sleep(3)
  shell.run("2")
elseif brown == f and black == t then
  redstone.setBundledOutput("back", restone.getBundledOutput("back") -colors.black)
  print("所有水都在流动。")
  sleep(3)
  shell.run("2")
elseif brown == t and black == t then
  redstone.setBundledOutput("back", restone.getBundledOutput("back") -colors.brown)
  redstone.setBundledOutput("back", restone.getBundledOutput("back") -colors.black)
  print("所有水都在流动。")
  sleep(3)
  shell.run("2")
elseif brown == f and black == f then
  print("所有水都在流动。")
  sleep(3)
  shell.run("2")
else
  print("ERROR!")
end
点赞
用户1009479
用户1009479

从代码来看,我猜brownblack是布尔类型,可以是true或者false。但是你现在用以下的方式进行比较:

t = true
f = nil

这是不正确的,因为虽然falsenil都是假值,但是它们不相同,也就是说,false不等于nil。所以应该将它改为 f = false

不过,这有点多余,你不需要在if语句中使用tf。 当你使用:

if brown == t and black == f then

你可以改为这样测试它们:

if brown and not black then
2013-08-03 01:26:08