Добавлен Алексей Андреич,
опубликован
Руководство по Lua 5.1
Содержание:
Назначение значений переменным называется присваиванием.
> x = 1
> y = "hello"
> print(x,y)
1 hello
Множественное присваивание
Lua поддерживает множественное присваивание в одной строке:
> x, y = 2, "there"
> print(x,y)
2 there
Значения справа присваиваются переменным слева. Можно присваивать сколько угодно значений и не обязательно, чтобы они были одного типа:
> a,b,c,d,e,f = 1,"two",3,3.14159,"foo",{ this="a table" }
> print(a,b,c,d,e,f)
1 two 3 3.14159 foo table: 0035BED8 nil
значения справа могут быть и выражениями (например, i+1), в отличии от переменных слева.
Однако множественное присваивание имеет несколько "особенностей":
Вычисления происходят раньше присвоения:
> i = 7
> i, x = i+1, i
> print(i, x)
8 7
Когда Lua доходит до второй строки, сначала вычисляются выражения i+1 и i. После вычислений вторая строка принимает вид i, x = 8, 7. И только после происходит присвоение.
Обмен значений
простой пример обмена значений между переменными:
> a,b = 1,2 -- установка начальных значений
> print(a,b)
1 2
> a,b = b,a -- обмен значениями
> print(a,b)
2 1
> a,b = b,a -- и обратно
> print(a,b)
1 2
Заметьте, нам не нужны временные переменные, как это было бы нужно в С (bold = b; b = a; a = bold;)
Порядок присваивания
Порядок, в котором происходит присваивание значений, не определён. Он не всегда происходит слева направо; Если, к примеру, вы присваиваете одной и той же переменной два значения, готовьтесь к неожиданным сюрпризам:
> a, a = 1, 2
> print(a)
1
В указанном выше примере присваивание происходит справа налево: сначала a=2 а потом a=1
Если вам важен порядок присваивания, назначайте значения переменным на разных строках.
Если вам важен порядок присваивания, назначайте значения переменным на разных строках.
Несовпадающий размер списков
Если список значений больше списка переменных, лишние значения игнорируются:
> a,b,c = 1,2,3,4,5,6
> print(a,b,c)
1 2 3
Если же список значений короче списка переменных, оставшимся переменным будет присвоен тип nil
> a,b,c,d = 1,2
> print(a,b,c,d)
1 2 nil nil
данная статья является вольным переводом с сайта lua-users.org
с возможными дополнениями и изменениями
с возможными дополнениями и изменениями
Содержание
Комментарии пока отсутcтвуют.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.