Это называется само-вызываемой функцией.
То, что вы делаете, когда вызываете (function(){})
, возвращает функциональный объект. Когда вы добавляете ()
к нему, он вызывается, и все в теле выполняется. ;
обозначает конец оператора, поэтому второй вызов завершается неудачей.
F # на самом деле имеет несколько очень хороших конструкций для создания приложений пользовательского интерфейса, управляемых событиями, таких как События первого класса , Выражения объекта , вызывающие установщики свойств из конструктор, например:
new Form (Text = "My Window Title", Width = 600, Height = 400)
,
и многое другое.
Однако создание конструктора форм в VS требует CodeDom для вашего языка. Текущая архитектура CodeDom отлично работает, если ваш язык в точности похож на C # или VB; он не подходит для генерации кода F # (это из веб-трансляции или интервью, которое я не могу найти прямо сейчас). Также требуются частичные классы, которые, если я правильно помню, не поддерживаются в языке с бета-версии 1. Вместо того, чтобы сосредоточиться на поддержке разработчиков в первом выпуске, команда F # решила потратить свои ресурсы на улучшение других частей языка, таких как асинхронное и параллельное программирование и т. Д.
Это означает, что у вас есть как минимум 4 варианта выбора. для создания пользовательского интерфейса на F #:
Of эти, вызов библиотеки пользовательского интерфейса C # из F # может быть наиболее гибким при сохранении знакомой парадигмы. Но на использование вычислительных выражений для быстрого создания пользовательского интерфейса вручную, безусловно, стоит обратить внимание.
Вы, безусловно, можете создавать графические интерфейсы пользователя на F # - в конце концов, это просто еще один язык .NET.
Книга Томаса Петричека, Функциональное программирование для реального мира (которую я немного помог) есть различные примеры графического интерфейса. Исходный код доступен для загрузки, если вы хотите увидеть примеры.
По общему признанию, некоторые аспекты программирования с графическим интерфейсом пользователя не соответствуют ужасно функциональному стилю, так как их много мутации, но есть способы и средства обойти это :)
Это язык .NET, поэтому он может использовать библиотеку классов .NET. Это означает Winforms, WPF или что-то еще, что вы можете использовать в C #.
Обновлено согласно ссылке Джеймса Хугарда
На данный момент F # не будет широко использоваться для графических интерфейсов, потому что это не самый важный вариант его использования. Из блога Дона Сайма :
В этом первом поддерживаемом выпуске наша цель должна состоять в том, чтобы сосредоточиться на основных сильных сторонах F # для исследовательского программирования с F # Interactive, программирования с данными и реализации параллельных и асинхронных компонентов.
Хотя теоретически вы можете использовать F # и стандартные библиотеки графического интерфейса, если вам нужен графический интерфейс, вы должны использовать VB или C #:
Пользователи F # должны использовать инструменты конструктора Visual Studio для создания кода C # или Visual Basic и включения этих компонентов в их приложения на F #.
В более долгосрочной перспективе «инструменты проектирования, ориентированные на представление, которые генерируют код F #», по словам Сайма, «определенно осуществимы».
Конечно, вы также можете использовать все классы WPF из F #. Вы можете создавать Windows, элементы управления и все остальное из F #, и я также иногда использую его из консоли F #.
Он еще не так тесно интегрирован в Visual Studio, как C # или VB, но, как вы можете видеть в комментариях, поддержка дизайнеров в будущем возможна. Думаю, нам придется подождать до тех пор (или использовать другие инструменты).
Мы продаем коммерческую библиотеку под названием F # для визуализации , которая написана на 100% коде F # и использует WPF для предоставления интерактивной графики с наборной математикой из вашего кода F #:
(источник: ffconsultancy.com )
Таким образом, безусловно, можно писать приложения с графическим интерфейсом пользователя на F # с использованием WPF.