Форум сайта python.su
20
FishHookОно конечно так… Но вот в Java все-таки пошли на это, и перечисления были введены в язык:
Тут вопрос рациональности: зачем изменять структуру языка (это дорого, долго и багоопасно), если вполне можно обойтись библиотечным кодом.
В первоначальной Java перечислений не было, вместо них предлагалось использовать классы со статическими константами. Начиная с версии 5 (1.5) перечисления были введены в язык, они представляют собой полноценный класс, в который можно добавлять произвольное количество полей и методов. Перечисления были введены для улучшенного контроля за типобезопасностью.
Офлайн
568
old_monty
Так это нововведение мало (или вообще никак, хз я не спец по джаве) не повлияло на JVM и байт-код, тут такая же история как с енумами в питоне - по сути расширение библиотеки. Ну и да, джава таки статически типизированный язык, без енумов там как без рук.
Офлайн
20
FishHook
Мне тут подумалось, что в Python фактически все же есть один встроенный тип, который ведет себя точно как enum. Это bool. Как и enum, любая переменная типа bool принимает только одно из всех возможных значений данного типа. Правда, этих возможных значений у bool всегда только 2, а у enum может быть намного больше - сколько позволяет реализация для этого типа (byte, short или int). Но в остальном bool вполне можно трактовать как встроенный в Python перечисляемый тип, если вернуться к вопросу топик-стартера.
Отредактировано old_monty (Фев. 19, 2016 19:14:26)
Офлайн
0
просто на собеседовании такой вопрос был и меня в тупик завел как начинающего) я так понял, что ответить надо было отрицательно
Офлайн