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 для разделения нормального возвращаемого значения и исключитеьных ситуаций.


Hosted by uCoz