Вопросы Разработчикам Скриптов, вопросы по скриптам (мелкие вопросы) |
Здравствуйте, гость ( Вход | Регистрация )
Вопросы Разработчикам Скриптов, вопросы по скриптам (мелкие вопросы) |
3.1.2012, 4:48
Сообщение
#861
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
1. MIKHAIL, изящность достигается не этим, не твоими "блошиными" исследованиями, ей-богу! Я уже писал тебе выше. Твои скрипты пашут с производительностью в 1 млн вычислений в секунду? Тогда да, твои экзерсисы оправданы. А если ты пишешь то же, что и мы, то забей, займись чем-то более полезным. Просто пиши, как умеешь...остальное придёт с практикой
2. И да, ты выше спрашивал про function, отвечаю - нет разницы. Это вопрос предпочтений. Лично я пишу всегда так: Код function GetData(sData) Цитата [01:40:49] * 10 [01:40:49] * 11 Enyby, а ты проверял только 1 раз? Проверь несколько раз, удивишься. Вот у меня с 4 раз: Тык сюда: Цитата [08:41:58] 6 [08:41:58] 6 [08:42:22] 6 [08:42:22] 6 [08:42:40] 5 [08:42:40] 6 [08:43:08] 6 [08:43:08] 6 Разница чисел у тебя и у меня, думаю, только из-за разных процессоров. И вообще, иногда надо думать и о красоте, особенно когда нет практически разницы между способами в скорости. Разница в микросекунды и наносекунды не считаются. |
|
|
3.1.2012, 9:14
Сообщение
#862
|
|
Освоившийся участник Группа: Пользователи Сообщений: 391 Регистрация: 4.11.2009 Из: Дом Пользователь №: 4 923 Спасибо сказали: 239 раз |
Да, согласен, разница в пределах вычислительной погрешности. Более того, нет такого кода, в котором функция переобъявляется несколько миллионов раз. А если есть, то этому кодеру можно рассказать что-то интересное.
|
|
|
3.1.2012, 19:06
Сообщение
#863
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Разницы между
Код function GetData(sData) и Код GetData = function(sData) быть не может, ибо lua интерпретатор транслирует первый вариант во второй (см. документацию |
|
|
7.1.2012, 17:57
Сообщение
#864
|
|
KEEP CLEAR AT ALL TIMES Группа: Пользователи Сообщений: 141 Регистрация: 4.9.2011 Из: Беларусь, Минск Пользователь №: 9 667 Спасибо сказали: 3 раза |
Как быть подскажите, пожалуйста.
Имеем: Код local sData1 = "text" local sData2 = "sData1" Не могу "снять" кавычки – обойтись без операции присваивания "=", т.е. без явного указания sData2 = sData1? На ум приходит только перевод типа переменной. Знаю как изменить тип из строки в число и обратно, собственно, только эти типы и знаю. Но ведь само понятие local (в данном случае sData1), вроде как и не число, и не строка. Быть может есть такая возможность изменить тип со строки на локальную. Вот ищу и спрашиваю... |
|
|
7.1.2012, 20:41
Сообщение
#865
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
То есть ты хочешь обойтись без копирования строки?
В таком случае нужно использовать таблицу Код local sData1 = {"text"} local sData2 = sData1 -- копирование по ссылке Использование: Код print(sData1[1])
print(sData2[1]) |
|
|
7.1.2012, 23:23
Сообщение
#866
|
|
Освоившийся участник Группа: Пользователи Сообщений: 391 Регистрация: 4.11.2009 Из: Дом Пользователь №: 4 923 Спасибо сказали: 239 раз |
MIKHAIL, какая-то каша. Опиши подробнее.
local - это не тип переменной, а модификатор, указывающий на то, что данная переменная локальная для текущего местоположения. Цитата We use the keyword local to describe any variables which we would like to keep local to the scope they are defined in.
|
|
|
7.1.2012, 23:32
Сообщение
#867
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
Enyby, забей.
Мне кажется, он не внял нашим советам относительно микроскопических надуманных "проблем".. и продолжает полировать стометровую скалу вручную нулёвкой.. |
|
|
7.1.2012, 23:43
Сообщение
#868
|
|
KEEP CLEAR AT ALL TIMES Группа: Пользователи Сообщений: 141 Регистрация: 4.9.2011 Из: Беларусь, Минск Пользователь №: 9 667 Спасибо сказали: 3 раза |
Setuper, спасибо за совет. Этот вариант подошёл. Буду изучать таблицы. Как я понял, в таблице могут быть разные типы данных?
Ksan, да, полирую вручную .) |
|
|
8.1.2012, 0:04
Сообщение
#869
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
MIKHAIL,
Ну и заодно - И да, чуть не забыл - |
|
|
20.1.2012, 15:00
Сообщение
#870
|
|
Активный участник Группа: Пользователи Сообщений: 67 Регистрация: 27.8.2009 Пользователь №: 4 279 Спасибо сказали: 0 раз |
кто может кинуть код скрипта, который перехватывает команду !stats (!stat) и выводит ее только операторам, иначе сообщение с ошибкой..
|
|
|
20.1.2012, 15:24
Сообщение
#871
|
|
Наруто на аваторке Группа: Пользователи Сообщений: 2 606 Регистрация: 11.10.2008 Из: Харькова Пользователь №: 771 Спасибо сказали: 774 раза |
roflDDDD,
Код tProfile = {
[0] = 1, -- [Master] [1] = 1, -- [OP] [2] = 0, -- [ViP] } function ChatArrival(user, sData) if tProfile[user.iProfile] == 1 then local cmd = sData:match"%b<>%s+(%S+).*|" if cmd == "!stat" or cmd == "!stats" then Core.SendToUser(user, "У вас нет прав на просмотр этой статистики") return true end end |
|
|
20.1.2012, 15:25
Сообщение
#872
|
|
Освоившийся участник Группа: Пользователи Сообщений: 391 Регистрация: 4.11.2009 Из: Дом Пользователь №: 4 923 Спасибо сказали: 239 раз |
Код function ChatArrival(tUser, sData) local sCmd = sData:match("^%S+%s["..SetMan.GetString(29).."](%S+)") if sCmd and (sCmd:match("^stats?$") or sCmd:match("^memstats?$")) then if tUser.bOperator == nil then Core.GetUserData(tUser, 11) end if not tUser.bOperator then Core.SendToAll(sData) return true end end end Артём, твой вариант можно обойти. *stats, +stats и т. д. UPD: Исправил ошибку. |
|
|
20.1.2012, 15:28
Сообщение
#873
|
|
Наруто на аваторке Группа: Пользователи Сообщений: 2 606 Регистрация: 11.10.2008 Из: Харькова Пользователь №: 771 Спасибо сказали: 774 раза |
Enyby, можно, если эти префиксы есть в настройках хаба
|
|
|
20.1.2012, 15:29
Сообщение
#874
|
|
Освоившийся участник Группа: Пользователи Сообщений: 391 Регистрация: 4.11.2009 Из: Дом Пользователь №: 4 923 Спасибо сказали: 239 раз |
Мой никак нельзя.
|
|
|
20.1.2012, 15:36
Сообщение
#875
|
|
Активный участник Группа: Пользователи Сообщений: 67 Регистрация: 27.8.2009 Пользователь №: 4 279 Спасибо сказали: 0 раз |
|
|
|
20.1.2012, 15:39
Сообщение
#876
|
|
Освоившийся участник Группа: Пользователи Сообщений: 391 Регистрация: 4.11.2009 Из: Дом Пользователь №: 4 923 Спасибо сказали: 239 раз |
Смотри выше в этой теме.
|
|
|
20.1.2012, 15:42
Сообщение
#877
|
|
Активный участник Группа: Пользователи Сообщений: 67 Регистрация: 27.8.2009 Пользователь №: 4 279 Спасибо сказали: 0 раз |
|
|
|
20.1.2012, 15:44
Сообщение
#878
|
|
Освоившийся участник Группа: Пользователи Сообщений: 391 Регистрация: 4.11.2009 Из: Дом Пользователь №: 4 923 Спасибо сказали: 239 раз |
Для "спасибо" есть специальная кнопочка внизу каждого поста. Если пост помог - нажимаешь.
Спасибо сказали: |
|
|
20.1.2012, 15:46
Сообщение
#879
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
Enyby, можно подсократить строку
Код if sCmd and (sCmd:match("stats?") or sCmd:match("memstats?")) then таким образом: Код if sCmd and (sCmd:find("stat") then Тут в stats? и memstats? лишние s? , так как stat входит в оба слова.Только при этом нужно быть уверенным, что нет других команд, содержащих stat, это касается любого из представленных кодов. Если есть такие команды, то тут лучше использовать сравнение команд с шаблонами, а не поиск наличия. Я тоже написал было код, но не стал выкладывать, видя ваши. |
|
|
20.1.2012, 15:50
Сообщение
#880
|
|
Освоившийся участник Группа: Пользователи Сообщений: 391 Регистрация: 4.11.2009 Из: Дом Пользователь №: 4 923 Спасибо сказали: 239 раз |
Если быть совсем точным, то надо
Код if sCmd and (sCmd:match("^stats?$") or sCmd:match("^memstats?$")) then Это моя ошибка. Ksan, нельзя. Будет у тебя своя команда, в другом скрипте, с подстрокой "stat" и будет она заблокирована, если этот скрипт выше. |
|
|
Похожие темы
|
Сейчас: 23.11.2024, 8:42 |