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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 28.08.2009, 19:30
MaxFX вне форума Посмотреть профиль Отправить личное сообщение для MaxFX Найти все сообщения от MaxFX
  № 1  
Ответить с цитированием
MaxFX

Регистрация: Jul 2009
Сообщений: 39
По умолчанию Передача параметров по ссылке

Возникла проблема. Возможна ли в AS3 передача типов int или Number в функцию по ссылке без создания локальных копий этих параметров.
Нужно сделать что то типа.

Код AS3:
..
public function calcSome(a: int, b: int)
{
  a+=10;
  b+= 20;
  var buff:int = a;
  a = b;
  b = a;
}
 
public function doSome()
{
  var a: int = 5;
  var b: int = 5;
  calcSome(a, b);
  trace(a); //25
  trace(b); //15
}
 
..

Старый 28.08.2009, 19:40
iflamberg вне форума Посмотреть профиль Отправить личное сообщение для iflamberg Найти все сообщения от iflamberg
  № 2  
Ответить с цитированием
iflamberg
 
Аватар для iflamberg

Регистрация: Jan 2009
Сообщений: 1,651
незя никаким образом, кроме как обернуть в объект.

Старый 28.08.2009, 19:41
MonkDead вне форума Посмотреть профиль Отправить личное сообщение для MonkDead Посетить домашнюю страницу MonkDead Найти все сообщения от MonkDead
  № 3  
Ответить с цитированием
MonkDead
 
Аватар для MonkDead

Регистрация: Dec 2007
Сообщений: 204
Нет, нельзя, но никто не мешает обернут в объект (класс).
Код AS3:
package  
{
	public class Test
	{
                public var a:int;
                public var b:int;
 
		public function Test()
		{
 
		}
        }
}
А дальше все как у вас.
Код AS3:
public function calcSome(value:Test)
{
value.a+=10;
value.b+= 20;
var buff:int = value.a;
value.a = value.b;
value.b = value.a;
}
 
public function doSome()
{
var test:Test = new Test();
test.a = 5;
test.b = 5;
calcSome(test);
trace(test.a); //25
trace(test.b); //15
}

Старый 28.08.2009, 19:45
iflamberg вне форума Посмотреть профиль Отправить личное сообщение для iflamberg Найти все сообщения от iflamberg
  № 4  
Ответить с цитированием
iflamberg
 
Аватар для iflamberg

Регистрация: Jan 2009
Сообщений: 1,651
я тесты не проводил. Но мне кажется это окажется бессмысленным по соображениям скорости.

Старый 28.08.2009, 19:51
MonkDead вне форума Посмотреть профиль Отправить личное сообщение для MonkDead Посетить домашнюю страницу MonkDead Найти все сообщения от MonkDead
  № 5  
Ответить с цитированием
MonkDead
 
Аватар для MonkDead

Регистрация: Dec 2007
Сообщений: 204
iflamberg, я бы так не сказал , абсолютно не критично. Вы же вроде такой же вариант предложили или вы имели ввиду что-то вроде этого.
Код AS3:
var test:Object = new Object();
test.a = 5;
test.b = 5;
Я написал такой вариант через обертку классом (можно класс наследовать от Object, но это сам автор вопроса решит, что ему надо), т.к. наверняка структура и задачи будут расширятся (появляться методы например reset() и т.д.).


Последний раз редактировалось MonkDead; 28.08.2009 в 19:56.
Старый 28.08.2009, 20:42
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Цитата:
Сообщение от iflamberg Посмотреть сообщение
я тесты не проводил. Но мне кажется это окажется бессмысленным по соображениям скорости.
Как раз в случае типизированного объекта будет быстрее.

Старый 28.08.2009, 22:15
AL.exe вне форума Посмотреть профиль Отправить личное сообщение для AL.exe Посетить домашнюю страницу AL.exe Найти все сообщения от AL.exe
  № 7  
Ответить с цитированием
AL.exe
 
Аватар для AL.exe

Регистрация: Jan 2004
Адрес: Net
Сообщений: 1,049
Отправить сообщение для AL.exe с помощью ICQ
Цитата:
Сообщение от etc Посмотреть сообщение
Как раз в случае типизированного объекта будет быстрее.
Я думаю, iflamberg имел ввиду, что быстрее будет просто передать по значению данные примитивного типа и вернуть их.
__________________
Дело не в тебе

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

Теги
параметры функции , ссылки
Опции темы
Опции просмотра

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

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


 


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


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