Обмен технологиями

Начало работы с lua (2) — типы данных

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Предисловие

Ссылка на эту статью взята из:Типы данных Lua | Учебник для новичков (runoob.com)

Для тех, кто хочет узнать больше, пожалуйста, перейдите по ссылке выше:

восемь основных типов

type - функция для просмотра типа данных:

тестовая программа:

  1. print(type("Hello world")) --> string
  2. print(type(10.4*3)) --> number
  3. print(type(print)) --> function
  4. print(type(type)) --> function
  5. print(type(true)) --> boolean
  6. print(type(nil)) --> nil
  7. print(type(type(X))) --> string
  8. print(type(Y)) -->nil
  9. print(type('Y')) -->string

Демонстрация эффекта

Вы можете видеть, что тип (Y), который мы здесь выводим, является нулевым типом. Почему? Вам будет продемонстрирован следующий ноль (пустой).

ноль (пусто)

Тип nil представляет тип, который не имеет допустимого значения. Он имеет только одно значение — nil. Например, печать переменной без присвоения выведет нулевое значение:

Тип неинициализированной переменной — nil

Следующее: все выходные типы трех переменных, которым не присвоены начальные значения, равны нулю.

nil удаляет пары ключ-значение в таблице

тестовая программа

  1. tab1 = { key1 = "val1", key2 = "val2",
  2. "val3","val4",key3 = "val5" }
  3. for k, v in pairs(tab1) do
  4. print(k .. " - " .. v)
  5. end
  6. print("=========直接输出=============")
  7. tab1.key1 = nil
  8. for k, v in pairs(tab1) do
  9. print(k .. " - " .. v)
  10. end
  11. print("============删除key1后==========")
  12. tab1.key3 = nil
  13. for k,v in pairs(tab1) do
  14. print(k.. " - "..v)
  15. end
  16. print("=========删除key3后============")

результат операции

Для глобальных переменных и таблиц nil также имеет эффект «удаления». Присвоение значения nil глобальным переменным или переменным в таблице эквивалентно их удалению.

nil следует сравнивать с двойными кавычками "

type(X)==nil приводит кЛОЖЬПричина в том, что type(X) по сути является возвращаемой строкой «nil», которая является строковым типом:

логическое значение

Логический тип имеет только два необязательных значения: true (истина) и false (ложь) Lua рассматривает false и nil как false, а все остальное также является истиной. Число 0 также является истиной.

тестовая программа

  1. print(type(true))
  2. print(type(false))
  3. print(type(nil))
  4. if false or nil then
  5. print("至少有一个是 true")
  6. else
  7. print("false 和 nil 都为 false")
  8. end
  9. if 0 then
  10. print("数字 0 是 true")
  11. else
  12. print("数字 0 为 false")
  13. end

Демонстрация эффекта

число


Lua по умолчанию имеет только один числовой тип — тип double (двойной точности) (тип по умолчанию можно изменить в luaconf.h), следующие методы записи рассматриваются как num.

строка (строка)

"" '' -- представляет строку


[[ ]] — представляет строку
 

Числа можно преобразовать в строки

При выполнении арифметических операций над числовой строкой Lua попытается преобразовать числовую строку в число:

Используйте .. для объединения строк

 

стол

В Lua создание таблиц осуществляется с помощью «конструктивных выражений». Простейшим сконструированным выражением является {}, которое используется для создания пустой таблицы. Вы также можете добавить некоторые данные в таблицу и инициализировать ее напрямую:

таблица инициализации

Изменить таблицу на основе индекса (ключа)

Таблица в Lua на самом деле представляет собой«Ассоциативный массив»(ассоциативные массивы), индекс массива может быть числом или строкой.

Индексы Lua начинаются с 1 (вместо)

Таблица не будет иметь фиксированную длину. При добавлении новых данных длина таблицы будет автоматически увеличиваться. Неинициализированные таблицы будут равны нулю.

функция

В Lua функции рассматриваются как «значения первого класса».

Функции могут храниться в переменных:

Лямбда-выражение (анонимная функция), передающее параметры


нить


В Lua самым важным потоком является сопрограмма. Он похож на поток и имеет собственный независимый стек, локальные переменные и указатель инструкций.
Глобальные переменные и большинство других вещей могут использоваться совместно с другими сопрограммами.

Разница между потоками и сопрограммами: потоки могут запускаться несколько раз одновременно, но сопрограммы могут запускаться только одну в любой момент времени, а работающая сопрограмма будет приостановлена ​​только тогда, когда она приостановлена.

пользовательские данные (пользовательский тип)


пользовательские данные — это тип определяемых пользователем данных, используемый для представления типа, созданного приложением или библиотекой языка C/C++.
Вы можете хранить любые данные любого типа данных C/C++ (обычно структуру и указатель) в переменной Lua и вызывать ее.