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

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

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

Регистрация: Jul 2007
Сообщений: 805
Отправить сообщение для ramshteks с помощью ICQ Отправить сообщение для ramshteks с помощью Skype™
и своей "практики" могу привести пример, где Function.call полезен.

Представьте себе что у вас есть метод который принимает строку формата "something with %var%, %var%" и неограниченное количество параметров для подставления вот в такие форматы "%var name%"
и его сигнатура вот такая:
function printf(str:String, ...args:Array):String

и вот вам понадобилось этот самый метод завернуть в другой, например в нем вы описываете попытку взять эту саму str из xml. и этот метод для удобства имеет точно такую же сигнатуру:

function getVarByParams(varname:String, ...params:Array):String

только в его теле вы сталкиваетесь с тем, что передать ...params вы не можете просто передав как

printf(var_from_xml, params);

так как будет передан просто массив параметров первым элементом массива.
В этом случае Function.call может оказаться спасительным

printf.call(null, var_from_xml,params)

вызовет метод именно так как вы этого и ожидали.

Старый 01.07.2012, 13:54
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
ramshteks, всё круто, только это не про call.

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

Регистрация: Jul 2007
Сообщений: 805
Отправить сообщение для ramshteks с помощью ICQ Отправить сообщение для ramshteks с помощью Skype™
Цитата:
Сообщение от etc Посмотреть сообщение
ramshteks, всё круто, только это не про call.
Действительно, перепутал. Использование несколько иное и для apply

Код AS3:
public function byParam(varname:String, ...params:Array):String {
			params.unshift(byName(varname));
			return StringUtils.printf.apply(null, params);
		}

Старый 01.07.2012, 23:49
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 4  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
Цитата:
Приведенные варианты не одно и то же
Ай, ну да. Ну, без квадратных скобок )

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

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

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


 


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


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