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

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

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

Регистрация: May 2008
Адрес: Земля.Украина.Одесса
Сообщений: 219
Отправить сообщение для ERrorMAKros с помощью ICQ Отправить сообщение для ERrorMAKros с помощью Skype™
По умолчанию Динамические свойства в with()

Извиняюсь за неправильное название топика, прошу модераторов поправить название (излишки ночного кодописания)

Добрый день (вечер).
Вот появился такой вот вопрос:
Код AS3:
var myObj:Object={PropOne:"text", PropTwo:false, PropN: Math.random()};
var somePropName: String="PropN";
var Value: Number=30;
with(myObj)
{
// somePropName=Value; ????
}
Возможно ли изменить значение свойства в myObj внутри инструкции with, имея название свойства - в виде строки и не обращаясь к myObj напрямую?


Последний раз редактировалось wvxvw; 10.03.2010 в 14:44. Причина: Нужно поспать как следует!
Старый 10.03.2010, 08:25
Juice_Green вне форума Посмотреть профиль Отправить личное сообщение для Juice_Green Посетить домашнюю страницу Juice_Green Найти все сообщения от Juice_Green
  № 2  
Ответить с цитированием
Juice_Green
 
Аватар для Juice_Green

Регистрация: Dec 2005
Адрес: Новосибирск
Сообщений: 529
Отправить сообщение для Juice_Green с помощью ICQ Отправить сообщение для Juice_Green с помощью Skype™
а что мешает сразу обратиться напрямую?
Код AS3:
with(myObj)
{
  PropN = Value;
}

Старый 10.03.2010, 09:29
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 3  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
я бы не советовал использовать with - абсолютно не улучшает читаемость кода, а наоборот ухудшает.
Код AS3:
myObj[somePropName] = value;
и вообще лучше не использовать Object а создать свой кастомный класс данных

Код AS3:
package  
{
	public class CustomObject
	{
		public var one:String;
		public var two:Boolean;
		public var n:Number;
 
		public function CustomObject($one:String,$two:Boolean,$n:Number) 
		{
			one = $one;
			two = $two;
			n = $n;
		}
 
	}
 
}
........
 
var myObj:CustomObject= new CustomObject("text",false,Math.random());
var value: Number=30;
myObj.n = value;
__________________
Отряд Котовскага


Последний раз редактировалось Котяра; 10.03.2010 в 09:38.
Старый 10.03.2010, 13:59
ERrorMAKros вне форума Посмотреть профиль Отправить личное сообщение для ERrorMAKros Посетить домашнюю страницу ERrorMAKros Найти все сообщения от ERrorMAKros
  № 4  
Ответить с цитированием
ERrorMAKros
 
Аватар для ERrorMAKros

Регистрация: May 2008
Адрес: Земля.Украина.Одесса
Сообщений: 219
Отправить сообщение для ERrorMAKros с помощью ICQ Отправить сообщение для ERrorMAKros с помощью Skype™
Дело в том что имена свойств в myObj меняются, в нем может быть "что угодно"
рассчитывал получить доступ к методу таким образом:
Код AS3:
var myObj:Object={PropOne:"text", PropTwo:false, PropN: Math.random()};
var somePropName: String="PropN";
var Value: Number=30;
with(myObj)
{
[somePropName]=Value; // ...но оказалось, что - напрасно :)
}

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

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Можно использовать flash.utils.describeType(myObj) - получите XML с полным описанием всех свойств, методов, акцессоров и тд. Потом пройтись по этому XML циклом for each и найти нужное свойство. Все =)
__________________
...вселенская грусть

Старый 10.03.2010, 14:26
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 6  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
Код AS3:
with(myObj)
{
	valueOf()[somePropName] = value;
}

Старый 10.03.2010, 14:57
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 7  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Цитата:
Сообщение от ERrorMAKros Посмотреть сообщение
Дело в том что имена свойств в myObj меняются, в нем может быть "что угодно"
рассчитывал получить доступ к методу таким образом:
Код AS3:
var myObj:Object={PropOne:"text", PropTwo:false, PropN: Math.random()};
var somePropName: String="PropN";
var Value: Number=30;
with(myObj)
{
[somePropName]=Value; // ...но оказалось, что - напрасно :)
}
а чем не устраивает без with?

Код AS3:
var myObj:Object={PropOne:"text", PropTwo:false, PropN: Math.random()};
var somePropName: String="PropN";
var Value: Number=30;
myObj[somePropName]=Value;
__________________
Отряд Котовскага

Старый 10.03.2010, 20:18
ERrorMAKros вне форума Посмотреть профиль Отправить личное сообщение для ERrorMAKros Посетить домашнюю страницу ERrorMAKros Найти все сообщения от ERrorMAKros
  № 8  
Ответить с цитированием
ERrorMAKros
 
Аватар для ERrorMAKros

Регистрация: May 2008
Адрес: Земля.Украина.Одесса
Сообщений: 219
Отправить сообщение для ERrorMAKros с помощью ICQ Отправить сообщение для ERrorMAKros с помощью Skype™
2 Silin: Великолепно! То что доктор прописал!
2 All: Смысл задачи именно в ее сути! Способов реализации данной задачи - достаточно Интересовала реализация именно при работе с инструкцией with().

Вот и решение (by Silin):
Код AS3:
var myObj:Object={PropOne:"text", PropTwo:false, PropN: Math.random()};
var somePropName: String="PropN";
var Value: Number=30;
with(myObj)
{
valueOf()[somePropName] = Value;
}
Всем спасибо, полагаю - топик можно считать закрытым

Старый 10.03.2010, 20:27
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 9  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Нет ничего, что делает with, что нельзя було бы сделать лучше без него - это просто атавизм и непонятка в спецификации языка, не более.
__________________
Hell is the possibility of sanity

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

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

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


 


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


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