Lua“if then”语句出错(预期'结束'(在第28行关闭'if'))

时间:2016-01-18 22:45:01

标签: lua computercraft

我收到了错误

bios:14: [string "Lighting"]:58: 'end' expected (to close 'if' at line 28) 

老实说,我不知道自己刚开始做Lua和编码以来我在做什么。我认为这与某个地方没有end有关。

term.clear()
term.setCursorPos(17, 4)
print("Welcome")
sleep(2)
term.setCursorPos(8, 5)
print("What lights would you like to control?")
input = read()
if input == "Hall" then
  term.clear()
  term.setCursorPos(17,4)
  print("On or Off?")
  input = read()
  if input == "on" then
    redstone.setOutput("back", true)
    print("Hall Lighting Turned On")
    sleep(5)
    shell.run("Lighting")
  else
    redstone.setOutput("back", false)
    print("Hall Lighing Turned Off")
    sleep(5)
    shell.run("Lighting")
  if input == "Bedroom" then
  term.clear()
  term.setCursorPos(17,4)
  print("On or Off")
  input = read()
  if input == "on" then
    redstone.setOutput("left", true)
    print("Bedroom Lighting Turned On")
    sleep(5)
    shell.run("Lighting")
  else
    redstone.setOutput("left", false)
    print("Bedroom Lighing Turned Off")
    sleep(5)
    shell.run("Lighting")
  if input == "Labs" then
  term.clear()
  term.setCursorPos(17,4)
  print("On or Off?")
  input = read()
  if input == "on" then
    redstone.setOutput("right", true)
    print("Lab Lighting Turned On")
    sleep(5)
    shell.run("Lighting")
  else
    redstone.setOutput("right", false)
    print("Lab Lighing Turned Off")
    sleep(5)
    shell.run("Lighting")
  end
else
  print("Error")
  sleep(3)
  shell.run("Lighting")
end

1 个答案:

答案 0 :(得分:5)

您似乎在几个地方遗漏了end字。

结构应该是:

if ... then
  some code
else
  some optional code
end

此外,尝试更好地缩进代码。你会清楚地知道你应该把end字放在哪里。

你想要的可能是:

term.clear()
...
input = read()

if input == "Hall" then
  ...
  if input == "on" then
    ...
  else
    redstone.setOutput("back", false)

    shell.run("Lighting")
  end -- missing end!
end -- missing end!

if input == "Bedroom" then
    ...
  if input == "on" then
    ...
  else
    redstone.setOutput("left", false)
    ...
    shell.run("Lighting")
  end -- missing end!
end -- missing end!

...