Войти на сайт

Авторизация, ждите ...
×

ТЕМА: Как перевести скрипты в плагины

Как перевести скрипты в плагины 8 года 4 мес. назад #93026

  • DK
  • DK аватар
  • Вне сайта
  • Светлый дракон
  • DKPlugins
  • Сообщений: 946
  • Спасибо получено: 1129
  • ОраторДаритель СтимкеяПрограммист RubyПроект месяца 3 местоВетеранРазработчикПрограммист JavaScript Проект месяца 2 местоПаладинПроект месяца 1 место
Всем привет.

В этой теме я буду выкладывать некие "шаблоны", с помощью которых можно перевести скрипты в плагины. Или хотя бы научиться читать код.

Определение класса
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


Определение класса с наследованием
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


Определение класса с наследованием + использование конструктора нового класса
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]
Последнее редактирование: 8 года 4 мес. назад от DK. Причина: Ошибка
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: strelokhalfer, Демий, poca, Jas6666

Как перевести скрипты в плагины 8 года 4 мес. назад #93028

  • DK
  • DK аватар
  • Вне сайта
  • Светлый дракон
  • DKPlugins
  • Сообщений: 946
  • Спасибо получено: 1129
  • ОраторДаритель СтимкеяПрограммист RubyПроект месяца 3 местоВетеранРазработчикПрограммист JavaScript Проект месяца 2 местоПаладинПроект месяца 1 место
Вызов функции из родительского класса
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


Тоже самое, но с параметрами
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


Переменная класса
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


Alias функций (дополнение функций)
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]
Последнее редактирование: 8 года 4 мес. назад от DK. Причина: Ошибка
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: strelokhalfer, Демий, poca, Jas6666

Как перевести скрипты в плагины 8 года 4 мес. назад #93031

  • Iren_Rin
  • Iren_Rin аватар
  • Вне сайта
  • Мастер
  • Сообщений: 247
  • Спасибо получено: 537
  • КоммерсантУчительПрограммист RubyПроект месяца 1 местоПроект года 1 место
Этот код не будет работать, call вызывается у объекта функции, а у не протатипа.
ClassName1.prototype.call(this); // именно эта функция

Этот код не имеет смысла, т.к. в любом рубе классе есть пустой конструктор.
class ClassName < ClassName1
   def initialize
   end
end
 
#Это тоже самое что и 
class ClassName < ClassName1
end
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: strelokhalfer

Как перевести скрипты в плагины 8 года 4 мес. назад #93032

  • DK
  • DK аватар
  • Вне сайта
  • Светлый дракон
  • DKPlugins
  • Сообщений: 946
  • Спасибо получено: 1129
  • ОраторДаритель СтимкеяПрограммист RubyПроект месяца 3 местоВетеранРазработчикПрограммист JavaScript Проект месяца 2 местоПаладинПроект месяца 1 место
Iren_Rin пишет:
Этот код не будет работать, call вызывается у объекта функции, а у не протатипа.
ClassName1.prototype.call(this); // именно эта функция

Этот код не имеет смысла, т.к. в любом рубе классе есть пустой конструктор.
class ClassName < ClassName1
   def initialize
   end
end
 
#Это тоже самое что и 
class ClassName < ClassName1
end

Спасибо. В первом случае забыл дописать функцию. А во втором просто указал, что пишем различные функции. Сейчас исправлю оригинал

UPD. Если не написать пустой initialize, то будет использоваться метод из родительского класса. А этот код относится к разделу "использование конструктора нового класса"
Последнее редактирование: 8 года 4 мес. назад от DK.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: poca

Как перевести скрипты в плагины 8 года 4 мес. назад #93034

  • Iren_Rin
  • Iren_Rin аватар
  • Вне сайта
  • Мастер
  • Сообщений: 247
  • Спасибо получено: 537
  • КоммерсантУчительПрограммист RubyПроект месяца 1 местоПроект года 1 место
Тогда добавь код родительского класса, чтобы было видно что у него непустой конструктор, все тогда станет ясно. Алиасы лучше показывать не на конструкторах, т.к. конструкторы это необычные методы \ функции. Конечно на них все это будет работать, но все же.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: DK, strelokhalfer

Как перевести скрипты в плагины 8 года 4 мес. назад #93035

  • DK
  • DK аватар
  • Вне сайта
  • Светлый дракон
  • DKPlugins
  • Сообщений: 946
  • Спасибо получено: 1129
  • ОраторДаритель СтимкеяПрограммист RubyПроект месяца 3 местоВетеранРазработчикПрограммист JavaScript Проект месяца 2 местоПаладинПроект месяца 1 место
Исправил ошибки, подробнее расписал про переменные, алиасы оставил
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: poca

Как перевести скрипты в плагины 8 года 4 мес. назад #93115

  • DK
  • DK аватар
  • Вне сайта
  • Светлый дракон
  • DKPlugins
  • Сообщений: 946
  • Спасибо получено: 1129
  • ОраторДаритель СтимкеяПрограммист RubyПроект месяца 3 местоВетеранРазработчикПрограммист JavaScript Проект месяца 2 местоПаладинПроект месяца 1 место
Вызов функции из класса + параметры по умолчанию
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


times
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


Отсутствие объекта (nil в ruby, null в js)
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


Вернуть значение из функции
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]
Последнее редактирование: 8 года 4 мес. назад от DK.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: strelokhalfer, Демий, poca

Как перевести скрипты в плагины 8 года 4 мес. назад #93116

  • strelokhalfer
  • strelokhalfer аватар
  • Вне сайта
  • Архитектор Миров
  • Знатный грамотей
  • Сообщений: 1640
  • Спасибо получено: 1078
  • Организатор конкурсовПрограммист Ruby2 место 2 место Сбитая кодировкаПереводчикДаритель Стимкея
1. У тебя метод объекта, метод класса есть с self.
2. Укажи что times есть только у чисел, а то кто нибудь вдруг пойдёт строку так перебирать)
3. Вроде верно)
"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Администратор запретил публиковать записи гостям.

Как перевести скрипты в плагины 8 года 4 мес. назад #93118

  • DK
  • DK аватар
  • Вне сайта
  • Светлый дракон
  • DKPlugins
  • Сообщений: 946
  • Спасибо получено: 1129
  • ОраторДаритель СтимкеяПрограммист RubyПроект месяца 3 местоВетеранРазработчикПрограммист JavaScript Проект месяца 2 местоПаладинПроект месяца 1 место
strelokhalfer пишет:
1. У тебя метод объекта, метод класса есть с self.
2. Укажи что times есть только у чисел, а то кто нибудь вдруг пойдёт строку так перебирать)
3. Вроде верно)

Поясни на счет первого, не очень понял. Завтра второй пункт поправлю или ты поправь. Тыжмодератор)
Администратор запретил публиковать записи гостям.

Как перевести скрипты в плагины 8 года 4 мес. назад #93120

  • strelokhalfer
  • strelokhalfer аватар
  • Вне сайта
  • Архитектор Миров
  • Знатный грамотей
  • Сообщений: 1640
  • Спасибо получено: 1078
  • Организатор конкурсовПрограммист Ruby2 место 2 место Сбитая кодировкаПереводчикДаритель Стимкея
Метод класса можно дернуть без объекта, аля File.Open(def self.open), а метод объекта соответственно
window = window_base.new
window.setskin("System\window.png) #def setskin
Пс. Прав нет)
4. Да, в руби можно не указывать ретурн, но это плохой вкус)
"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Последнее редактирование: 8 года 4 мес. назад от strelokhalfer.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: DK

Как перевести скрипты в плагины 8 года 4 мес. назад #93122

  • EvilCat
  • EvilCat аватар
  • Вне сайта
  • Просветлённый
  • Сообщений: 469
  • Спасибо получено: 850
  • 2 место Учитель3 место Готв
Что такое "отсутствие объекта"? Когда оно используется (в Яваскрипте)?
Администратор запретил публиковать записи гостям.

Как перевести скрипты в плагины 8 года 4 мес. назад #93123

  • DK
  • DK аватар
  • Вне сайта
  • Светлый дракон
  • DKPlugins
  • Сообщений: 946
  • Спасибо получено: 1129
  • ОраторДаритель СтимкеяПрограммист RubyПроект месяца 3 местоВетеранРазработчикПрограммист JavaScript Проект месяца 2 местоПаладинПроект месяца 1 место
EvilCat пишет:
Что такое "отсутствие объекта"? Когда оно используется (в Яваскрипте)?

Нулевое, пустое значение объекта
Администратор запретил публиковать записи гостям.

Как перевести скрипты в плагины 8 года 4 мес. назад #93124

  • strelokhalfer
  • strelokhalfer аватар
  • Вне сайта
  • Архитектор Миров
  • Знатный грамотей
  • Сообщений: 1640
  • Спасибо получено: 1078
  • Организатор конкурсовПрограммист Ruby2 место 2 место Сбитая кодировкаПереводчикДаритель Стимкея
Кстати, лучше не использовать в примерах initiliase
"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Администратор запретил публиковать записи гостям.

Как перевести скрипты в плагины 8 года 4 мес. назад #93125

  • DK
  • DK аватар
  • Вне сайта
  • Светлый дракон
  • DKPlugins
  • Сообщений: 946
  • Спасибо получено: 1129
  • ОраторДаритель СтимкеяПрограммист RubyПроект месяца 3 местоВетеранРазработчикПрограммист JavaScript Проект месяца 2 местоПаладинПроект месяца 1 место
strelokhalfer пишет:
Кстати, лучше не использовать в примерах initiliase
Почему?
Администратор запретил публиковать записи гостям.

Как перевести скрипты в плагины 8 года 4 мес. назад #93126

  • strelokhalfer
  • strelokhalfer аватар
  • Вне сайта
  • Архитектор Миров
  • Знатный грамотей
  • Сообщений: 1640
  • Спасибо получено: 1078
  • Организатор конкурсовПрограммист Ruby2 место 2 место Сбитая кодировкаПереводчикДаритель Стимкея
Ну, метод конструктор, лучше брать абстрактные Foo Bar
"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: DK

Как перевести скрипты в плагины 8 года 4 мес. назад #93127

  • DK
  • DK аватар
  • Вне сайта
  • Светлый дракон
  • DKPlugins
  • Сообщений: 946
  • Спасибо получено: 1129
  • ОраторДаритель СтимкеяПрограммист RubyПроект месяца 3 местоВетеранРазработчикПрограммист JavaScript Проект месяца 2 местоПаладинПроект месяца 1 место
strelokhalfer пишет:
Ну, метод конструктор, лучше брать абстрактные Foo Bar

Ну ладно, буду использовать их. Хотя с конструкторами тоже надо работать
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: strelokhalfer

Как перевести скрипты в плагины 8 года 4 мес. назад #93128

  • EvilCat
  • EvilCat аватар
  • Вне сайта
  • Просветлённый
  • Сообщений: 469
  • Спасибо получено: 850
  • 2 место Учитель3 место Готв
DK пишет:
Нулевое, пустое значение объекта

Не понятно в разрезе Яваскрипта...

В C# и VB, языках со строгой типизацией, у переменных, объявленных как "объект", может быть значение "отсутствие объекта" (null и Nothing соответственно).

В Руби всё является объектом, соответственно, у любого имени можно спросить: nil? Но по правде говоря, я не знаю, когда это применяется, не настолько много работала с Руби.

Но с Яваскриптом я работала много... Там отсутствие объекта (например, ты искал в неё элемент веб-страницы, а он не нашёлся, вернулось false или null) определяется просто по условию самого объекта:
var canvas = document.GetElementById("canvas");
if (!canvas) throw new Error("canvas не найден!")

В Яваскрипте любой объект считается за истинное условие (следует заметить, что не любое значение считается объектом, в отличие от Руби!), а undefined, null, 0 и ряд других значений - ложными. Соответственно, если ожидаешь объект, то существование объекта проверяют просто условием - это надёжно.

Вообще в Яваскрипте редко различают undefined и null, почти что только в опциональных аргументах. Но если аргумент в любом случае не может принять ложных значений, допустимых в функции, то пишут просто: arg = arg || значение_по_умолчанию.
Последнее редактирование: 8 года 4 мес. назад от EvilCat.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: DK, strelokhalfer, yuryol

Как перевести скрипты в плагины 8 года 4 мес. назад #93129

  • DK
  • DK аватар
  • Вне сайта
  • Светлый дракон
  • DKPlugins
  • Сообщений: 946
  • Спасибо получено: 1129
  • ОраторДаритель СтимкеяПрограммист RubyПроект месяца 3 местоВетеранРазработчикПрограммист JavaScript Проект месяца 2 местоПаладинПроект месяца 1 место
Я написал сравнение === null именно потому что в объекте может лежать undefined или 0. Я понимаю, что если ты точно ждешь какого - то объекта, то можно просто поставить условие не объект, но, например, в моих плагинах частенько в функциях есть параметры по умолчанию, которые могут быть объектами, числами или строками. Соответственно object = object || 1 не будет работать для 0, а только для строки и объекта. Также в руби я часто использовал nil? чтобы убедиться, что в объекте не пустое значение и можно дальше работать
Администратор запретил публиковать записи гостям.

Как перевести скрипты в плагины 8 года 4 мес. назад #93130

  • EvilCat
  • EvilCat аватар
  • Вне сайта
  • Просветлённый
  • Сообщений: 469
  • Спасибо получено: 850
  • 2 место Учитель3 место Готв
Поэтому-то и не понятно, что такое "отсутствие объекта"... undefined, 99 или строка "мяу" - тоже отсутствие объекта.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Cerberus

Как перевести скрипты в плагины 8 года 4 мес. назад #93131

  • DK
  • DK аватар
  • Вне сайта
  • Светлый дракон
  • DKPlugins
  • Сообщений: 946
  • Спасибо получено: 1129
  • ОраторДаритель СтимкеяПрограммист RubyПроект месяца 3 местоВетеранРазработчикПрограммист JavaScript Проект месяца 2 местоПаладинПроект месяца 1 место
EvilCat пишет:
Поэтому-то и не понятно, что такое "отсутствие объекта"... undefined, 99 или строка "мяу" - тоже отсутствие объекта.
Постараюсь получше описать
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: poca
Время создания страницы: 0.277 секунд