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