Как заставить io.read() возвращать строку?
Я пытаюсь научиться программировать Computercraft Mining Turtles, и я хочу написать программу, которая запрашивает у пользователя размеры длины стороны для куба, который затем строится. Я использую io.read(), чтобы пользователь вводил длины сторон, и если он хочет, чтобы куб был сплошным или полым с помощью входов Y/N. Однако, когда я проверяю ответ на этот последний вопрос, я получаю сообщение об ошибке, что у меня есть таблица и мне нужна строка. Код ошибки: куб: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 ответа
Ваша проблема string:lower()
который обезвоживает string.lower(string)
который пытается действовать на string
Таблица. Это не сработает.
Ты хочешь solid:lower()
или же string.lower(solid)
,
В ComputerCraft вы обычно должны использовать встроенную функцию
read()
Вместоio.read
поскольку io.read
сделан для чтения файлов вместо пользовательского ввода.
Вместо io.write
Вы также можете использовать write
или же print
,