Есть ли способ ловчее (Int || String) ?

static public function f(value:Dynamic)
{
        if (Std.is(value, Int))
        {
                trace("I am Int");
        }
        else if (Std.is(value, String))
        {
                trace("I am String");
        }
        else {
                trace("I am Unknown");
        }
}

А можно ли тоже самое сделать через switch?

Type.getClass / Type.getClassName

если нужно просто получить класс то так: Type.getClass(value);
ну а если хочется непременно через switch, то можно так:

switch ( Type.getClassName( Type.getClass(value) ) )
{
        case 'Int':     trace("I am Int");
        case 'String':  trace("I am String");
        default:        trace("I am Unknown");
}

Рабочий вариант на switch

switch(Std.string(Type.typeof(value)))
{
        case "TInt":                            trace("I am Int");
        case "TClass([class String])":          trace("I am String");
        default:                                trace("I am Unknown");
}

Type.getClass / Type.getClassName

switch ( Type.getClassName( Type.getClass(value) )  )
{
        case 'Int':     trace("I am Int");
        case 'String':  trace("I am String");
        default:        trace("I am Unknown");
}

Я так тоже писал. С типом Int и Float такой подход не работает.
f(12345);
f("abcdef");
f(new Shape());

В Trace получим:
I am Unknown
I am String
I am Unknown

Type.getClass(...) от Int и Float выдает null.

Можно так

Можно так ещё:

switch(true)
{
        case Std.is(value, Int):      trace("I am Int");
        case Std.is(value, String):   trace("I am String");
        default:                      trace("I am Unknown");
}

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <blockcode> <dd>
  • Строки и параграфы переносятся автоматически.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>.

Подробнее о форматировании

CAPTCHA
Этот вопрос помогает предотвратить автоматический спам
Image CAPTCHA
Enter the characters shown in the image without spaces, also respect upper and lower case.
To prevent automated spam submissions leave this field empty.