Как заставить 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,

Другие вопросы по тегам