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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 22.09.2009, 18:52
progman вне форума Посмотреть профиль Отправить личное сообщение для progman Найти все сообщения от progman
  № 11  
Ответить с цитированием
progman
 
Аватар для progman

Регистрация: May 2007
Адрес: Saint-Petersburg
Сообщений: 136
Отправить сообщение для progman с помощью ICQ
Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
Код AS3:
var arg1:*,arg2:*;
function func(arg1:*, arg2:*):void{
this.arg1=arg1;
this.arg2=arg2;
}
начнем с того что в приличном обществе за такой код долго бьют двухтомником Страуструпа по рукам. До образования гематомных пятен на последних.

что по мне так this перед переменной это дикость. оправданное приминение только как для передачи параметра - указатель на себя любимого.
__________________
fast restart: *((int*)0) = 0;

Старый 22.09.2009, 18:54
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 12  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Цитата:
дело привычки, я тоже раньше не понимал, а теперь читается действительно лучше
Вот именно что привычки, когда перестал писать, вздохнул с облегчением.

Добавлено через 1 минуту
Цитата:
начнем с того что в приличном обществе за такой код долго бьют двухтомником Страуструпа по рукам. До образования гематомных пятен на последних.
Умничать не надо? Это был абстрактный пример.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 22.09.2009, 19:53
TommyLee вне форума Посмотреть профиль Отправить личное сообщение для TommyLee Найти все сообщения от TommyLee
  № 13  
Ответить с цитированием
TommyLee

Регистрация: Sep 2009
Сообщений: 130
Не знал, что это холивар. Я так понял, что это холивар как раз из-за того, что никто не в курсе, важен ли this для работы виртуальной машины?

Старый 22.09.2009, 20:13
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 14  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Почистил тему от словесного недержания. Писать о своем предпочтении использования this не надо, тема не об этом.
Цитата:
Я так понял, что это холивар как раз из-за того, что никто не в курсе, важен ли this для работы виртуальной машины?
Не важен. Холивар из-за оформления кода.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 22.09.2009, 20:30
kup вне форума Посмотреть профиль Отправить личное сообщение для kup Найти все сообщения от kup
  № 15  
Ответить с цитированием
kup

Регистрация: Apr 2009
Адрес: kup78.livejournal.com
Сообщений: 84
когда небыло ООП и классов, программировали так:

Код AS3:
struct Pos
{
	var x:int;
	var y:int;
}
 
function setPoistion(this:Pos, a:int, b:int)
{
	this.x = a;
	this.y = b;
}
оттуда и пошло, потом this стал ключевым словом, и передаваться в функции неявно, в основном используясь только когда нужно получить адрес структуры или разрулить неоднозначность с одинаковым именованием переменных. И указывать его всегда вобщем то ненужное заграмождение кода.

Но, если есть сомнения в квалификации коллег или вы пишите на PHP ставьте this в обязательном порядке.

Старый 22.09.2009, 21:24
TommyLee вне форума Посмотреть профиль Отправить личное сообщение для TommyLee Найти все сообщения от TommyLee
  № 16  
Ответить с цитированием
TommyLee

Регистрация: Sep 2009
Сообщений: 130
Цитата:
Сообщение от kup Посмотреть сообщение
когда небыло ООП и классов, программировали так:
....
Ооо, теперь ясно, откуда ноги растут. Значит, сейчас это уже анахронизм - хочешь пользуйся, хочешь нет, вирт.машине фиолетово. А тогда это было что? для программиста или для компилятора?

Старый 23.09.2009, 04:22
SamFR вне форума Посмотреть профиль Отправить личное сообщение для SamFR Посетить домашнюю страницу SamFR Найти все сообщения от SamFR
  № 17  
Ответить с цитированием
SamFR

Регистрация: Mar 2008
Адрес: Ростов-на-Дону
Сообщений: 354
Использовать this или нет – дело вкуса. Однако есть моменты, когда оно очень помогает. Один из них – разрешение области видимости. Взглянем, например, на следующий класс:

Код AS3:
public class Example{
 
    protected var mesage:String;
 
    public function Example(message:String){
        this.message = message;
    }
 
}
В данном случае область видимости параметра message перекрывает область видимости поля message. Для того, чтобы не извращаться и не называть параметр, например, messageParam, используем this для явного обращения к полю.

Также this используется для передачи ссылки на себя (например, parent.removeChild(this)). Без this этого не сделать никак. Однако следует учитывать, что в случае вызова функции с помощью call или apply this внутри неё может ссылаться, вообще говоря, куда угодно.

Так что, никакой это не анахронизм, а важный элемент языка.

Старый 23.09.2009, 09:36
ToRR вне форума Посмотреть профиль Отправить личное сообщение для ToRR Найти все сообщения от ToRR
  № 18  
Ответить с цитированием
ToRR

Регистрация: Feb 2007
Сообщений: 63
Цитата:
меня интересуют причины введения в язык this, чтобы знать, какие грабли могут ждать. есть, конечно, подозрение, что это не технический нюанс, а логический - чтобы программисту легче было ориентироваться в коде, но не уверен..
причина - необходимость иметь ссылку на объект, в контексте которого сейчас выполняется код. простейший пример:
Код AS3:
class Foo
{
   private var foo:String;
 
   public function Foo(foo:String)
  {
      //упс. ну и как нам здесь разобраться, какая именно foo нам нужна? а вот так:
      this.foo = "sdfsdf"; // переменной объекта класса Foo присвоили значение. т.е. той переменной которая у нас вот так записана -  private var foo:String;
      foo = "never do this"; //аргументу конструктора присвоили значение.
      //зачем так запутано? вот зачем:
      this.foo = foo;
  }
}
почитайте про контекст (объект, в котором сейчас выполняется код). например здесь - http://javascript.ru/tutorial/object/thiskeyword.
ой. писАл ответ с 1ой страницы, не заметил, что есть 2ая, на которой все это уже объяснили...


Последний раз редактировалось ToRR; 23.09.2009 в 09:43.
Старый 23.09.2009, 09:55
divinus вне форума Посмотреть профиль Отправить личное сообщение для divinus Найти все сообщения от divinus
  № 19  
Ответить с цитированием
divinus
 
Аватар для divinus

Регистрация: Dec 2005
Адрес: мухосранск
Сообщений: 661
Отправить сообщение для divinus с помощью ICQ
"когда небыло ООП и классов"
а когда-то и палками-копалками землю возделывали, и наверно было много противников "революции", когда какой-то мудак приделал к палке камень...
но смею напомнить, в связи с тем, что палка копалка была менее удобна она вымерла со временем
__________________
Кто может делать - делает, кто не может делать - учит, кто не может учить - управляет...

Старый 23.09.2009, 12:06
TommyLee вне форума Посмотреть профиль Отправить личное сообщение для TommyLee Найти все сообщения от TommyLee
  № 20  
Ответить с цитированием
TommyLee

Регистрация: Sep 2009
Сообщений: 130
Цитата:
Сообщение от SamFR Посмотреть сообщение
Код AS3:
public class Example{
 
    protected var mesage:String;
 
    public function Example(message:String){
        this.message = message;
    }
 
}
такой вариант понятен.
Цитата:
Сообщение от SamFR Посмотреть сообщение
Также this используется для передачи ссылки на себя (например, parent.removeChild(this)).
и
Цитата:
Сообщение от ToRR Посмотреть сообщение
почитайте про контекст (объект, в котором сейчас выполняется код). например здесь - http://javascript.ru/tutorial/object/thiskeyword.
вот с классами непонятно. Как будто this - это указатель, который принимает адрес заранее неизвестного класса, чтобы можно было обратиться к его методам. Есть что-нибудь поподробнее об этом, совсем для тех, кто в танке?

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

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

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


 


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


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