Логические значения и типы
Кроме чисел и текстов, в Lua есть ещё один простой вид значений: логическое значение (по-английски boolean, в честь математика Джорджа Буля). У него всего два значения, true и false. Это ответ на вопрос «да или нет»: идёт ли дождь? Открыт ли амбар?
local isRaining = false
local barnOpen = true
print(isRaining)
print("Амбар открыт:", barnOpen)Программа выведет:
false
Амбар открыт: trueВ следующем уроке логические значения будут решать, что делает ваша программа, например поливает ли Эмма поле. Пока обратите внимание на три вещи:
trueиfalse— ключевые слова, поэтому их пишут без кавычек."true"в кавычках — это текст, который только похож на логическое значение.- Их пишут строчными буквами.
Trueс заглавной — просто имя, и раз переменнойTrueнет, её значение —nil. - Как и
nil, логическое значение нельзя склеить с текстом с помощью..:"Дождь: " .. isRainingзаканчивается ошибкойattempt to concatenate a boolean value (local 'isRaining'). Выводите его через запятую или сначала превратите в текст, как вы узнаете в следующем упражнении.
У каждого значения есть тип: число, текст, логическое значение… Функция type сообщает его в виде текста:
print(type(120))
print(type(2.5))
print(type("Эмма"))
print(type(true))
print(type(nil))Программа выведет:
number
number
string
boolean
niltype говорит number и про integer, и про float; чтобы их различить, используйте math.type. Позже в курсе вы встретите другие типы, например table и function (попробуйте print(type(print))).
В Lua тип принадлежит значению, а не переменной. Одна и та же переменная может сейчас хранить число, а потом текст:
local harvest = 12
print(type(harvest))
harvest = "двенадцать"
print(type(harvest))Программа выведет:
number
stringLua это позволяет, но читающего программу это сбивает с толку. Храните в каждой переменной один вид значений.
Задание
- 1
Ниже выведите
milkи его тип так же, как в двух строках выше:Эмма string 1 number 6.5 number - 2
Так же выведите
barnOpenи его тип. Там написаноstring: значение в кавычках, значит, это текст. Исправьте строку 5, чтобыbarnOpenстала логическим значением и программа вывела:Эмма string 1 number 6.5 number false boolean - 3
И
cows, иmilk— числа. В последней строке выведите, какого вида каждое из них:math.type(cows)иmath.type(milk)через запятую:Эмма string 1 number 6.5 number false boolean integer float