如何让io.read()返回一个字符串?

时间:2015-08-28 14:30:05

标签: lua computercraft

我正在尝试学习如何对Computercraft Mining Turtles进行编程,并且我想编写一个程序,提示用户提供随后构建的多维数据集的边长尺寸。我使用io.read()来让用户输入边长,如果他想通过Y / N输入使立方体变为实心或空心。但是,当我检查最后一个问题的答案时,我得到一个错误,我有一个表,需要一个字符串。 错误代码:Cube:17:错误的参数:字符串预期,得到表

这是我的代码

--"Cube constructor"
--"Powered by UglySoft"

function get_dimensions()
  --"prompts for cube dimensions and Solid"

  print("Please enter the Cube dimensions.\n")

  io.write("Cube side length ")
  side_length = tonumber(io.read())

  io.write("Solid Cube? (Y/N) ")
  solid = io.read()


  solid = string:lower()

  return side_length, solid
end

function build_solid(side_length)
    print("Building solid Cube with side length ", side_length)
end

function build_hollow(side_length)
    print("Building hollow Cube with side length ", side_length)
end


function main()
    --"main part of the program"
    term.clear()
    print("Welcome to Cube Builder")
    print("powered by UglySoft \n")


    get_dimensions()

    if solid == "y" then
        build_solid()
    else
        build_hollow()
    end

end


main()

我对lua很新,我甚至不确定在这种情况下是否应该使用io.read()。非常感谢任何帮助,并随时提出问题。

2 个答案:

答案 0 :(得分:1)

您的问题是string:lower(),它会尝试在string.lower(string)表格上运行string。那不行。

您需要solid:lower()string.lower(solid)

答案 1 :(得分:0)

在ComputerCraft中,您通常应该使用内置函数

read()

而不是io.read,因为io.read用于读取文件而不是用户输入。

您也可以使用io.writewrite代替print