2013-05-27 4 views
0

У меня есть Haxe такой код:Haxe получить тип параметра функции

var fn:String->Int = function(s:String):Int{ 
    return 1; 
} 

getParameterType(fn,1);//Should return String as it is first parameter of fn 

что должно функционировать getParameterType код выглядеть?

+0

привет, я хочу спросить вас, что-то считает haxe .. вы можете мне помочь? – Rajneesh071

ответ

4

Haxe Reflection API можно найти здесь: Reflect и Type.

Просматривая их, похоже, не существует способа проверить типы аргументов на функциях, возможно потому, что эта информация недоступна во время выполнения на многих платформах. Javascript для примера не типично напечатан, и информация, которую вы ищете, по умолчанию не включена.

Так у вас есть три варианта:

  1. Использование RTTI (Run Time Type Info). Если класс помечен метаданными @:rtti (в Haxe 3, или если он implements haxe.rtti.Infos в Haxe 2), тогда информация об этом классе, включая типы параметров функции, доступна в формате Xml во время выполнения. Вам нужно будет взглянуть на Xml, чтобы выяснить, что такое аргумент. Это будет работать только для функций, которые привязаны к классам, но не работает для анонимных функций.

  2. Использование макросов. Это выходит за рамки моего ответа, но, возможно, спросите в списке рассылки Haxe, если вам нужна помощь :) Если тип аргумента известен во время компиляции, он может быть известен макросам, и вы, вероятно, можете сохранить эту информацию где-то поэтому он доступен во время выполнения.

  3. Выяснить другое использование, которое не требует от вас, чтобы знать тип :)

Конечно, если вам нужна только информация во время компиляции, а не во время выполнения, вы можете do: $type(fn) в любом месте вашего кода, и когда вы его компилируете, вы узнаете точную подпись типа «fn».

+0

привет, я хочу спросить вас, что-то расценивает haxe .. вы можете мне помочь? – Rajneesh071

+0

@ Rajneesh071 Я вижу, что вы спрашивали в нескольких местах: P Просто отправьте вопрос и пометьте его 'haxe' и, надеюсь, кто-то может вам помочь. В противном случае есть IRC-канал Haxe или список рассылки Haxe. –

+0

Я сделал, но член приостановил их ... – Rajneesh071

Смежные вопросы