Perl имеет перечисляемый тип?

Используйте Javascript:

OpenSameTab = '<script language="JavaScript" type="text/JavaScript">window.location = \'%s\';</script>'

, а затем

print OpenSameTab % 'file.py'
58
задан Brad Gilbert 25 February 2010 в 16:30
поделиться

4 ответа

Нет, нет встроенной перечислимой конструкции. Perl не делает большого строгого ввода, таким образом, я думаю, что существует на самом деле мало потребности в одной.

, По-моему, Readonly подход, который Вы использовали, серьезен.

существует также более традиционное constant прагма.

use constant {
    HOME   => 'Home',
    WORK   => 'Work',
    MOBILE => 'Mobile',
};

$phone_number->{type} = HOME;

Негласно, это настраивает функцию для каждой константы, которая возвращает значение, как так.

sub HOME () { 'Home' }

я придерживался бы с Readonly , если Вы не хотите использовать в своих интересах то свойство, например:

package Phone::Type;

use constant {
    HOME => 'Home',
    #...
};

package main;

print Phone::Type->HOME, "\n";
44
ответ дан titanofold 24 November 2019 в 18:58
поделиться

Perl не поддерживает понятие исходно, но существуют модули для добавления этой функциональности

https://metacpan.org/pod/enum

11
ответ дан titanofold 24 November 2019 в 18:58
поделиться

Ваш путь является более, чем соответствующим.

можно также создать перечисления с Американским лосем:: Util:: TypeConstraints, если Вы, оказывается, используете Американского лося. (Которым необходимо быть.)

8
ответ дан jrockway 24 November 2019 в 18:58
поделиться

Perl действительно имеет тип перечисления, как в C. Попробуйте это для получения подробностей.

perldoc enum

Например:

use enum qw(HOME WORK MOBILE);

Теперь у нас есть:

HOME == 0
WORK == 1
MOBILE == 2

Вы можете также сами устанавливайте индексы:

use enum qw(HOME=0 WORK MOBILE=10 FAX);

Теперь у нас есть:

HOME == 0
WORK == 1
MOBILE == 10
FAX == 11

Подробнее см. здесь

Обратите внимание, что это поддерживается не во всех версиях Perl. Я знаю, что v5.8.3 не поддерживает его, а v5.8.7 поддерживает.

25
ответ дан 24 November 2019 в 18:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: