|
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
|
![]()
Сообщение
#1041
|
|
![]() 7 квадратиков ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 793 Регистрация: 21.1.2009 Пользователь №: 1 895 Спасибо сказали: 301 раз ![]() |
MIKHAIL, http://mydc.ru/topic5769.html
|
|
|
![]()
Сообщение
#1042
|
|
![]() KEEP CLEAR AT ALL TIMES ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 141 Регистрация: 4.9.2011 Из: Беларусь, Минск Пользователь №: 9 667 Спасибо сказали: 3 раза ![]() |
Хочу следовать за редиректом. Добавляю в скрипт последнюю строку:
Код ... https = require("ssl.https") url = require("socket.url") https.redirect = true ... ... а результата нет. Прошу помощи. |
|
|
![]()
Сообщение
#1043
|
|
![]() Местный ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Неактивированные Сообщений: 908 Регистрация: 26.12.2008 Пользователь №: 1 574 Спасибо сказали: 1406 раз ![]() |
MIKHAIL, модуль https не поддерживает редиректы
|
|
|
![]()
Сообщение
#1044
|
|
![]() KEEP CLEAR AT ALL TIMES ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 141 Регистрация: 4.9.2011 Из: Беларусь, Минск Пользователь №: 9 667 Спасибо сказали: 3 раза ![]() |
В контексте PtokaX имеем:
Код local tmp function OnTimer() tmp = os.time() ... tmp = nil end Вопрос: при последующих событиях по таймеру, переменная tmp не станет глобальной, а всё так же будет локальной? Может быть это переключение произойдёт после сборки мусора?.. Понятно, что надо делать вот так: Код function OnTimer() local tmp = os.time() ... end , но меня интересует именно ситуация, указанная в самом начале. P.S.: если бы я знал, как "запросить" состояние области видимости переменной, то такого вопроса не возникло.)) |
|
|
![]()
Сообщение
#1045
|
|
![]() 7 квадратиков ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 793 Регистрация: 21.1.2009 Пользователь №: 1 895 Спасибо сказали: 301 раз ![]() |
MIKHAIL, останется локальной, сборщик мусора удалит лишь её старое значение.
|
|
|
![]()
Сообщение
#1046
|
|
![]() Местный ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Неактивированные Сообщений: 908 Регистрация: 26.12.2008 Пользователь №: 1 574 Спасибо сказали: 1406 раз ![]() |
MIKHAIL, сборщик мусора удаляет лишь те объекты, на которые отсутствуют ссылки. Он никак не влияет на области видимости переменных.
Все глобальные переменные лежат в таблице _G. Следовательно, если переменная не равна nil, и ее нет в _G, значит она локальная. |
|
|
![]()
Сообщение
#1047
|
|
![]() KEEP CLEAR AT ALL TIMES ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 141 Регистрация: 4.9.2011 Из: Беларусь, Минск Пользователь №: 9 667 Спасибо сказали: 3 раза ![]() |
Изначально переменная tmp была локальной (т.е. в таблице _G она, естественно, отсутствовала). Затем, при работе функции таймера, когда ссылка на неё перестала существовать (tmp = nil), сборщик мусора её [ссылку на переменную] и удалил. Окей, сборщик никак не влияет на область видимости переменных. Но вот потом, при последующих циклах работы функции таймера, идёт чёткое указание на её создание как "новой" переменной tmp = os.time(), но уже без модификатора local.
И вот тут у меня ступор: в какой области видимости будет переменная? Ведь никаких ссылок на неё к этому моменту уже быть не должно. Она не равна nil, но исходя из контекста, скорее всего, должна быть в таблице _G. Но её там нет... Каким-то образом хранится "память" о том, что изначально такая-то переменная была локальной? |
|
|
![]()
Сообщение
#1048
|
|
![]() Местный ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Неактивированные Сообщений: 908 Регистрация: 26.12.2008 Пользователь №: 1 574 Спасибо сказали: 1406 раз ![]() |
MIKHAIL, она нигде не хранится. Если присвоение происходит в той же области видимости, где переменная была объявлена локальной, то этой переменной будет присвоено новое значение. Если же это происходит за пределами области видимости, будет создана глобальная переменная.
|
|
|
![]()
Сообщение
#1049
|
|
![]() Белый Волк ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз ![]() |
Странно, захотел было сохранить тему через имеющуюся опцию при теме, однако облом - сохраняет только первые 15 страниц. Это ограничение никак не обойти? Может, есть в настройках сайта такая возможность?
А то мало ли, пропадёт сайт по какой-нибудь причине и ценная информация пропадёт тоже. Надо бы держать под рукой. |
|
|
![]()
Сообщение
#1050
|
|
![]() KEEP CLEAR AT ALL TIMES ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 141 Регистрация: 4.9.2011 Из: Беларусь, Минск Пользователь №: 9 667 Спасибо сказали: 3 раза ![]() |
Вариант 1 (распространен как тру)
Код if data then return ... end ... Вариант 2 Код if data then return ... else ... end Вопрос: неужели в первом варианте будет оптимизация с точки зрения производительности, а не количества символов в коде? Ведь во втором варианте просто else, который всегда идет по умолчанию с if, а не elseif[ not data then] ... end. Хотелось бы услышать специалистов. |
|
|
![]() ![]() |
Похожие темы
![]() |
Сейчас: 8.9.2024, 2:56 |