Вы знаете списка динамических языков ту.NET поддержки за 4,0 ДОЛЛАРА?
Я знаю IronRuby, IronPython поддерживаются. Не уверенный, если IronScheme. F#? Что еще?
Спасибо!
Единственным реальным преимуществом является возможность его использования в операторе switch
. Все остальные вещи, на которые способен перечисление, можно просто сделать с помощью простого класса ванили с помощью частного
конструктора, экземпляры которого, в свою очередь, объявляются как открытые статические конечные
поля рассматриваемого класса (typesafe образца). Другое преимущество перечисления, очевидно, что это делает код менее подробным, чем вы бы сделать с простым ванильным классом.
Но если я не ошибаюсь, в C++ (или это было C #?) можно использовать Последовательности
в операторе switch
. Таким образом, преимущество перечислений в Java ничтожно мало по сравнению с C++. Тем не менее, то же самое было предложено для Java 7, не уверен, что он сделает это.
Java 5 перечислений произошло из шаблона перечисления типа Джошуа Блоха Эффективная Java (первая редакция), чтобы избежать подводных камней перечислений в C/C + +/C # (которые просто
В основном константы int и перечисления int не являются наборными. Вы можете передать любое значение int. В C/C + + вы можете сделать это:
enum A { one, two, three };
enum B { beef, chicken, pork } b = beef;
void func(A a) { ... }
func((A)b);
К сожалению, шаблон перечисления typesafe из Effective Java имел много шаблона, не все это очевидно. Наиболее примечательным является то, что вам пришлось переопределить метод private readResolve
, чтобы остановить создание новых экземпляров Java при десериализации, что нарушило бы простую проверку ссылок (т. е. с помощью оператора = =
вместо равно ()
).
Таким образом, Java 5 enums имеют следующие преимущества по сравнению с ints:
EnumSet
и EnumMap
. Java 5 перечисляет эти преимущества по сравнению с использованием только классов:
readResolve ()
и т.д.); IronPython и IronRuby будут единственными официально поддерживаемыми динамическими языками.
C # 4,0 будет иметь новое ключевое слово «dynamic», которое будет создавать динамические объекты на основе DLR. По иронии судьбы, ключевое слово using dynamic является статическим объявлением. Дополнительные сведения о ключевом слове «dynamic» на URL-адресах IronPython .
Я думаю, что много путаницы в DLR происходит из числа ложных запусков для других языков. По причинам, которые я до сих пор не могу понять, Microsoft предпочла не продолжать поддержку Managed JScript. Интересная дискуссия на странице DLR в Codeplex , где сотрудник MS заявляет
DLR JScript был экспериментальным для информирования о дизайне DLR (деревья выражений, взаимодействие, сайты вызовов, хостинг и т.д.). JS, который мы выпустили с фьючерсами asp и динамическим sdk Silverlight, стал очень старым и непригодным для использования, поскольку DLR продолжал развиваться для выпуска в CLR 4.0. К сожалению, на данный момент нет планов по разработке и выпуску DLR-hostable JScript.
даже после того, как Managed JScript был представлен в качестве языка DLR первого класса, так что где-то вдоль линии это мнение изменилось. VBx никогда, казалось, не сходил с мертвой точки в том, что касается динамических функций. IronLisp стала IronScheme , которая не полностью мертва (кандидат на релиз вышел в октябре, но никаких обновлений кода с ноября). Нуа (Lua for the DLR) была DOA в 2008 году.
Особо следует отметить Phalanger , PHP для .Net. Хотя на данный момент не в DLR, согласно Википедии , постоянно предпринимаются усилия, чтобы поместить его в DLR.
Из Wikipedia: Dynamic Language Runtime
Услуги DLR в настоящее время используются в Развитие версии Ironruby, .Net Реализация Рубина Язык, а для Ironpython.
В 2007 году Microsoft планировала использовать DLR для предстоящих Visual Basic .NET 10,0 (VBX) и управляемый JScript (ECMAScript 3.0). Однако по состоянию на август 2009 года Microsoft не имеет больше планов реализации управляемого Jscript (Ecmascript 3.0) на DLR, и нет дальнейших упоминаний о Visual Basic .NET работает на DLR был сделан Microsoft на Visual Основные обновления развития. Похожий на C #, Visual Basic сможет Доступ к объектам с динамических языков построен на DLR, такой как IronPython и Ironruby [.
Иронсхема, предстоящая схема Реализация [, планировала построить DLR, но решил отказаться от этой идеи, потому что DLR ветвь проект используется из синхронизировать с багажником, а также потому, что DLR, по словам разработчиков, не мог поддержать большинство из Требования к схеме.
Jetfire - это динамический язык .net, доступный по адресу http://jetfire.codeplex.com . Синтаксис языка основан на C#.
Проект предоставляет доступ к объектам Jetfire с помощью "дианамических" объектов (DLR) .net C# 4.0.