Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Закрытая тема
Старый 29.02.2012, 04:01
gait вне форума Посмотреть профиль Отправить личное сообщение для gait Найти все сообщения от gait
  № 21  
gait

Регистрация: Mar 2010
Адрес: Russian Federation
Сообщений: 59
Цитата:
Сообщение от -De- Посмотреть сообщение
Загуглите, что такое this.
Из этого всё растёт.
Я не гуглил, просто открыл справку, а там написано только это: "Ссылка на объект, содержащий метод. При выполнении сценария ключевое слово this ссылается на объект, содержащий сценарий. В теле метода ключевое слово this ссылается на экземпляр класса, который содержит вызываемый метод." И всё, больше никаких подробностей
Цитата:
Сообщение от -De- Посмотреть сообщение
Когда лепят всюду, это такая прямая замена m_ венгерской нотации, означает, что переменная - член класса.
А если я как раз эту венгерскую нотацию и использую, только в упрощенном варианте
Код AS3:
private var _myObj:Object;
, то какая еще может быть польза от применения this? (Вообще-то, даже странно. Довольно часто встречаю конструкции с венгерскими нотациями и с this, например this._myObj. Это вообще как понимать? Зачем так делать?)

Цитата:
Сообщение от wvxvw Посмотреть сообщение
Я пишу this всегда, тогда когда оно есть.
Цитата:
Сообщение от wvxvw Посмотреть сообщение
Поэтому, я восновном пишу super, и редко this.
Всё-таки мне не очень ясно, когда вы пишете this

Цитата:
Сообщение от wvxvw Посмотреть сообщение
Еще такой момент. this это не ключевое слово, это переменная, просто компилятор сам заполняет значение этой переменной. Ключевое слово, это, например, for, var и т.д. - т.е. это не "идентификатор".
Я конечно в такие дебри не вдавался, и, может быть вы правы, но очень часто я встречал упоминание в адобовской доке, что это именно ключевое слово. Вот, например, страница 109 "Так как статические методы не связаны с отдельными экземплярами, в их теле нельзя использовать ключевые слова this и super.". "В примере проверяется также значение ключевого слова this. В данном случае this представляет глобальный объект." (стр 276). Или вот еще: "Учтите, что ключевое слово this относится к экземпляру ChildSprite с именем child. В этом состоит отличие от поведения в ActionScript 2.0. Если вы использовали компоненты в ActionScript 2.0, то могли запомнить, что когда метод класса передавался UIEventDispatcher.addEventListener(), область его действия была привязана к компоненту, который выполнял широковещательную рассылку события вместо класса, в
котором был определен метод прослушивателя. Иными словами, если вы пользовались этим методом в
ActionScript 2.0, ключевое слово this будет относиться к компоненту, осуществляющему широковещательную рассылку события, а не к экземпляру ChildSprite."

Но справедливости ради надо отметить, что this еще именуется в документации как ссылка (на той же 109 странице, например), поэтому, я не могу быть увереным в своём понимании.


Последний раз редактировалось gait; 29.02.2012 в 04:04.
Старый 29.02.2012, 04:33
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 22  
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Цитата:
Сообщение от gait Посмотреть сообщение
При выполнении сценария ключевое слово this ссылается на объект, содержащий сценарий. В теле метода ключевое слово this ссылается на экземпляр класса, который содержит вызываемый метод.
Ну да, кэп вот подсказывает, что когда нужен "объект, содержащий сценарий", "экземпляр класса, который содержит вызываемый метод", тогда и писать this. Ссылку там на себя передать кому. Без остального можно жить.
UPD: вроде так и не поняли, что же это такое. this - это экземпляр класса, в методе которого этот this написан. Статики живут глобально и отдельно от экземпляров класса (чтоб их вызывать не нужно создавать экземпляр класса, например), нет экземпляра - нет this. Переменные типа класса - все ссылки, потому this - это тоже ссылка (т.е. при присвоении а = б, если а и б - классы, то копирование класса б не происходит, а а и б ссылаются на один обьект и если менять а, то будет меняться и б).
Если что - поищите примеры использования %) И учите, блин, язык, а то чую написал китайскую грамоту =\
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.


Последний раз редактировалось -De-; 29.02.2012 в 04:43.
Старый 29.02.2012, 11:22
Yahen вне форума Посмотреть профиль Отправить личное сообщение для Yahen Посетить домашнюю страницу Yahen Найти все сообщения от Yahen
  № 23  
Yahen

Регистрация: Jan 2012
Сообщений: 35
Вообще-то слово this положено писать обязательно, если обращаешься к свойству класса внутри него. AS3 позволяет во многих случаях быть безалаберным и не указывать this явно. Компилятор умеет разруливать во многих случаях такую ситуацию. Но в целом это плохая практика. Другие языки программирования как правило не позволяют писать так безалаберно.
Стандарты промышленного кодирования в конторах обычно не разрешают не писать this. То бишь неявное обращение к свойствам класса не приветствуется.

Старый 29.02.2012, 11:31
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 24  
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Оффтоп:

Цитата:
Другие языки программирования как правило не позволяют писать так безалаберно.
На моей памяти это только php. Какие еще?
__________________
тут я

Старый 29.02.2012, 11:50
elder_Nosferatu вне форума Посмотреть профиль Отправить личное сообщение для elder_Nosferatu Найти все сообщения от elder_Nosferatu
  № 25  
elder_Nosferatu
 
Аватар для elder_Nosferatu

Регистрация: Nov 2010
Адрес: 48° 55'N 24° 42'E GMT +2:00
Сообщений: 399
Записей в блоге: 1
По моему тут все зависит от реализации транслятора. Когда начинал учить с++ никак не мог подобрать книгу и компилятор к ней (не било у меня тогда доступа к и-нету). Вот и приходилось експериментировать.

Добавлено через 2 минуты
Самое что запомнилось, так это первый мой прокол.
В книге было написано
Код:
#include <iostream>
а борландовский Турбо Си++ хотел
Код:
#include <iostream.h>
Добавлено через 3 минуты
Думаю ето может касаться и this.

Старый 29.02.2012, 12:14
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 26  
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
У меня такое правило: если в классе есть определение метода:
Код AS3:
public function method():void ...
то обращение к нему в этом классе выглядит так:
Код AS3:
this.method();
Если же определения метода в классе нет, то обращение выглядит так:
Код AS3:
super.method();
__________________
...вселенская грусть

Старый 29.02.2012, 12:27
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 27  
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Цитата:
Сообщение от Yahen Посмотреть сообщение
Стандарты промышленного кодирования в конторах обычно не разрешают не писать this.
Не видел ни одного. У гугла такого нет. http://google-styleguide.googlecode....k/cppguide.xml
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 29.02.2012, 13:52
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 28  
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Всегда пишу super и this. Выбор "надо"/"не надо" отнимает время впустую.
__________________
Поймай яблоко 2!

Старый 29.02.2012, 14:16
HardCoder вне форума Посмотреть профиль Отправить личное сообщение для HardCoder Найти все сообщения от HardCoder
  № 29  
HardCoder
 
Аватар для HardCoder

блогер
Регистрация: Apr 2011
Сообщений: 583
Записей в блоге: 2
Все написанное ниже - это мое личное мнение и любое оспаривание моих слов... по крайней мере буду стараться игнорировать.
В посте №20 Wolsh меня шокировал. Знал что-то про наследование про то что подклассы - это классы с бöлбшим количеством свойств, но дальше не лез. Что бы там не говорили, теперь буду везде писать и this и super, а теперь и более серьезно относится к этим вещам. Руки от этого не отпадут, конвенция этого не запрещает. Мало того, считаю это хорошим тоном ЯВНО указывать к КОМУ ты обращаешься. ООП - он на то и ООП, что ты обращаешься к ОБЪЕКТАМ, а не к призракам. Это как писать точку с запятой в конце выражения, без которой можно и обойтись (это пример - не примите за новую ветку флуда; знаю что в случае с точкой с запятой есть объективные преимущества). Не знаю, обратил ли кто-то внимание на мои слова несколькими постами выше: у this действительно есть преимущества: скорость написания/чтения кода (сниппеты/распознавание переменных). А слова:
Цитата:
this для тех, кто не умеет нормально оформлять код
расцениваю как крик души, потому что объективности в этих словах ни какой. Меня вот, например, жутко бесит, когда фигурную скобку ставят в новой строчке вместо того чтобы ставить в конце выражения. Конвенция говорит что это правильно писать в новой строчке, но я все равно не могу к такому привыкнуть. Но, я же не говорю, что человек, который это делает, что-то не знает, или он делает по-глупому, только потому что Я так не делаю. Он выработал себе такой стиль, привык к нему. Поэтому если его стиль не нарушает правил хорошего стиля или конвенции - так пусть пишет себе. Мы не в праве с ним спорить, если у нас нет объективных доказательств что он не прав. Поэтому сам спор: "this/не this" - глупый.
На вопрос топикстартера:
Цитата:
Что дает употребление this в не динамических классах?
Ответ: ничего не дает.

Добавлено через 10 минут
Хотя, признаю что пример со скобой - плохой. Конвенция говорит, что надо писать в новой строчке, а я сам же дальше написал: "...если его стиль не нарушает правил...". Ну, что же - слово не воробей... Но, думаю, смысл понятен
__________________
Я мало чего умею, но зато хорошо умею учиться...

Старый 29.02.2012, 14:56
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 30  
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
Ответ: ничего не дает.
Код AS3:
public var someValue:int;
 
public function someMethod(someValue:int):void
{
    this.someValue = someValue;
}
__________________
משיח לא בא
משיח גם לא מטלפן

Создать новую тему Закрытая тема Часовой пояс GMT +4, время: 05:46.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 05:46.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.