![]() |
|
||||||||||
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
(касается как as2, так и as3)
Каким образом задать тип ф-ции, являющейся аргументом ф-ции? Т.е. необходимо задать строгую типизации параметров. Нужно что-то вроде интерфейса для классов пример:
__________________
Отряд Котовскага Последний раз редактировалось Котяра; 21.10.2009 в 18:58. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Есть правило - "один вопрос - одна тема".
Так что плодите. Непонятен сам вопрос "задать тип функции". Это тип возвращаемого ей значения - как вообще его можно задать извне? Он зависит от того, что ф-ия возвращает оператором return, а не ф-ия возвращает то, что написано после двоеточия)))) Добавлено через 9 минут
__________________
Reality.getBounds(this); Последний раз редактировалось Wolsh; 21.10.2009 в 14:11. |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Цитата:
т.е. ф-ция f - должна реализовывать некий интерфейс. тогда использование может выглядеть где-то так: В чистом виде такого в АS нет, может как-то извернуться можно?
__________________
Отряд Котовскага Последний раз редактировалось Котяра; 21.10.2009 в 19:04. |
|
|||||
|
Регистрация: Mar 2008
Адрес: Ростов-на-Дону
Сообщений: 354
|
В AS, в т.ч. AS3, такого сделать не получится. Можно, конечно, как-нибудь извратиться, но это не будет ни красиво, ни быстро.
А чем, кроме проверки на этапе компиляции, не устраивает вариант, предложенный Wolsh? |
|
|||||
|
Modus ponens
|
Проголосуй!
http://bugs.adobe.com/jira/browse/ASC-3853 ![]() Да, что я делаю, если ну оооочень надо, а производительность не важна: public class FunctionInterface extends AbstractDelegate { public function FunctionInterface(method:Function, param1:Type1, param2:Type2 ... paramN:TypeN) { super(method); .... } public override function call():* // увы... { return super._metod(param1, param2, ... paramN); } Цитата:
Лень пробовать, но, сколько мне память не изменяет, в AS2 можно было наследоваться от всех классов, Function в том числе ![]()
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 22.10.2009 в 02:48. |
|
|||||
|
стервочка (я мужик)
|
то что Вы тут обсуждаете называет сигнатура. это там в каких-то зачатках есть в ES, но в AS ни в каких нету ( увы. тоже очень хочется.
|
|
|||||
|
А как насчет такого изврата:
public function doFunction (f:Function, a:int,b:int):String { var q:Funtion = function(a:int, b:int):String { return f(a,b) } return q(a,b) } Но можно там вставить try catch и кидать ValueError при несоответствии типов аргументов или возвращаемого значения.
__________________
Дело не в тебе Последний раз редактировалось AL.exe; 22.10.2009 в 11:43. |
|
|||||
|
ветеран форума
|
Если такая штука нужна только в некоторых компонентах приложения, их можна на haXe вообще написать, т к там это есть.
Я пишу для себя комментарии просто в коде, чтобы все это было под рукой, плюс упоминаю в asDoc комментариях.
__________________
4am is time to rock |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Вобщем, я вижу только одно решение - создавать классы для каждой функции.
Класс Func1, класс Func2, класс Func3... Все эти классы поддерживают интерфейс IFunc, который предписывает им иметь метод func(a:int, b:int):String И тогда -
__________________
Reality.getBounds(this); |
![]() |
![]() |
Часовой пояс GMT +4, время: 02:58. |
|
|
« Предыдущая тема | Следующая тема » |
|
|