![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Aug 2012
Сообщений: 297
|
Здравствуйте.
![]() Подскажите, пожалуйста. ![]() Есть метод-экземпляр, который содержит обязательный параметр 'parametr'. Я внутри этого метода-экземпляра создаю локальную переменную с таким же именем, как и 'parametr'. Задаю локальной переменной значение '1'. Когда я вызываю метод-экземпляр, то в качестве аргумента отсылаю '2'. После этого пишу trace('Значение локальной переменной:',this.parametr,'Значение обязательного параметра:',parametr);. И тут возникает ошибка, будто бы parametr (this.parametr) не найден. Я так понимаю происходит поиск переменной в самом классе? Заранее большое спасибо. ![]() |
|
|||||
|
Так делать нельзя, потому что аргументы функции и её локальные переменные находятся в одной области видимости.
function someFunction(param:int):void { var param:int = 0; // так делать нельзя var newParam:int = param; // а так можно } Возможно, вы перепутали с переменной класса, к которой в таких случаях нужно обращаться через this
__________________
adobe AS3 manual |
|
|||||
|
Регистрация: Aug 2012
Сообщений: 297
|
Цитата:
Цитата:
public function doctrine() { //Вызываю метод экземпляр с одним обязательным параметров и качестве аргумента отсылаю число 10. myTested(10); } //Определяю метод-экземпляр myTested с модификатором управления доступом private, так как я не буду работать с этим методом-экземпляра в других классах. //Этому методу-экземпляру присваиваю один обязательный параметр. private function myTested(localVar) { var localVar:Number = 100; trace(localVar); } |
|
|||||
|
Цитата:
Всё сработало так, как и написано переменная объявленная внутри функции затеняет ту, которая в параметрах. Обратиться на самом деле к ней можно, через arguments[0], но это уже ухищрения. Просто запомните что так делать не нужно. *Я кажется понял, вы не понимаете что значит локальная переменная. Локальная в вашем случае и есть localVar, а переменная класса это другое
__________________
adobe AS3 manual |
|
|||||
|
Цитата:
Можно, конечно, магией через arguments, но под это одно предложение подходит: "Китайские комсомольцы сами себе создают трудности, а потом сами их героически преодолевают" |
|
|||||
|
Цитата:
п.с. Так лучше вообще не делать никогда. |
|
|||||
|
Регистрация: Aug 2012
Сообщений: 297
|
Цитата:
Хорошо, запомню. Я понимаю, что значит и локальная переменная и переменная класса (экземпляра). То что описывает Колин Мук (обращение к переменной экземпляра с помощью выражения this в том случае, если у параметра метода экземпляра такое же имя) у меня получилось осуществить. Потом попробовал сделать то же самое но только с локальной переменной, не получилось и задал вопрос. Добавлено через 1 минуту Цитата:
Хорошо, я не буду делать так. |
|
|||||
|
Цитата:
this это ссылка на самого себя, на экземпляр. Туда достучаться можно из любой вложенности функций, а вот доступ к конкретному scope (области видимости) да еще и с одинаковыми конфликтующими именами - будет получить сложнее.
__________________
adobe AS3 manual |
![]() |
![]() |
Часовой пояс GMT +4, время: 00:26. |
|
|
« Предыдущая тема | Следующая тема » |
|
|