![]() |
Динамическое создание переменных в экземпляре класса
Подскажите, как динамически создавать переменные классах?
Допустим, хочу, чтобы цикл создал (_parts) штук public переменных с именами ("_part"+i) Код AS1/AS2:
|
Метод сет это тоже самое что = только древний. Класс нужно сделать динамическим тогда все будет работать.
|
Отлично, заработало, создаю в конструкторе, видны внутри класса. А как сделать их public?
И еще вопрос, разве можно как-то без set() создать переменную с неизвестным заранее именем? |
Вам наооборот нужно делать финты ушами, чтобы сделать ваши переменные private - используя ASSetPropFlags... и то это все равно будет условность... в АС2 нету приватных переменных.
|
В конструкторе:
Код AS1/AS2:
Код AS1/AS2:
Код:
конструктор: str |
Цитата:
Код AS1/AS2:
Даже более того: Код AS1/AS2:
|
О, спасибо, через this[] заработало!
|
Цитата:
Код AS1/AS2:
Цитата:
|
Финт - сложный фокус с игральными картами, чтобы его сделать нужно одновременно двумя руками поменять карты в колоде так, чтобы остальные этого не заметили, сделать такой фокус ушами не возможно.
"Финты ушами" - значит, что то, что вы будете пытаться сделать в принципе не возможно, и при этом со стороны выглядит как очень трудноосуществимая задача. Вы можете попытаться осуществить вашу задачу и через Object.addProperty() и через Object.watch() и через Object.__resolve(), но в конечном счете вы все равно прийдете к выводу, что содать содать свойство не видимое вне класса в АС2 не возможно. |
А если это будет getter. А в нем будет проверка равенства __proto__ и arguments.caller.__proto__? :). Хотя конечно метод можно будет вызвать. Но нельзя будет просто получить его значение. Да и в принципе никому это нинадо. Вот в питоне например тоже нету в принципе приватных переменных и ничего. Еще бы можно было незная имен переменных получать их, для тестов бы пригодилось.
|
Цитата:
Код AS1/AS2:
|
Попробуй это с классом. Такой метод подойдет только для обьекта, или для класса если поля были заданы ему как обьекту. Типа Class['prop'] = value;. Тоже самое с пакетами, когда в пакете допустим 3 класса ttt.a, ttt.b, ttt.c. А мы сделаем import ttt.*. Попробуем сделать трейс:
Код AS1/AS2:
Код AS1/AS2:
|
Цитата:
Приватные свойства нужны для удобства, а делать столько усилий ради того, чтобы их только создать - уже само по себе вызывает улыбку. |
Ну они изначально были как условность, а строая видимость приватный/публичный нужна лиш в популярных языках. Т.к многие будут путатся нарушать инкапсуляцию и тд... Естественно нормальный человек просто так не полезет к методу, если он в принципе должен быть приватным.
|
| Часовой пояс GMT +4, время: 12:10. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.