Программирование на Lua | ||
Часть I. Язык Глава 2. Типы и Значения |
Lua - язык с динамическим определением типов. В нем отсутствуют определения типов - тип переменной определяется ее значением.
В Lua есть 8 базовых типов: nil, boolean, number, string, userdata,function, thread и table. Функция type
возвращает имя типа переданной переменной:
print(type("Hello world")) --> string print(type(10.4*3)) --> number print(type(print)) --> function print(type(type)) --> function print(type(true)) --> boolean print(type(nil)) --> nil print(type(type(X))) --> stringВ последнем примере результат
"string"
не зависит от значения X
, т.к. результат type
всегда строка.
Переменные не имеют предопределенного типа; любая переменная может содержать значения любого типа:
print(type(a)) --> nil (`a' is not initialized) a = 10 print(type(a)) --> number a = "a string!!" print(type(a)) --> string a = print -- да, это допустимо! a(type(a)) --> functionОтносительно последних двух строк: функции в Lua являются первоклассными (высшими) значениями; таким образзом, можно манипулировать ими как любыми другими значениями. (Более подробно смотрите в Главе 6).
Обычно, когда для хранения значений различных типов используется одна переменная, результатом становится нечитаемый код. Однако, иногда разумно и полезно использовать эту возможность, например при использовании nil для разделения нормального возвращаемого значения и исключитеьных ситуаций.
Copyright © 2003-2004 Roberto Ierusalimschy. All rights reserved. | Перевод на русский Artem13 |