Вы видели базовую структуру программы на F #, поэтому вам будет легко понять другие основные строительные блоки языка программирования F #.
Жетоны в F #
Программа F # состоит из различных токенов. Токен может быть ключевым словом, идентификатором, константой, строковым литералом или символом. Мы можем разделить токены F # на два типа:
- Ключевые слова
- Символ и операторы
F # Ключевые слова
В следующей таблице приведены ключевые слова и краткие описания ключевых слов. Мы обсудим использование этих ключевых слов в последующих главах.
| Ключевое слово | Описание |
|---|---|
| Аннотация | Указывает на метод, который либо не имеет реализации в типе, в котором он объявлен, либо является виртуальным и имеет реализацию по умолчанию. |
| а также | Используется во взаимно рекурсивных привязках, в объявлениях свойств и с несколькими ограничениями на общие параметры. |
| как | Используется для присвоения объекту текущего класса имени объекта. Также используется для присвоения имени целому шаблону в соответствии с шаблоном. |
| утверждать | Используется для проверки кода во время отладки. |
| база | Используется в качестве имени объекта базового класса. |
| начать | В подробном синтаксисе указывает начало блока кода. |
| учебный класс | В подробном синтаксисе указывает начало определения класса. |
| дефолт | Указывает на реализацию абстрактного метода; используется вместе с объявлением абстрактного метода для создания виртуального метода. |
| делегат | Используется для объявления делегата. |
| делать | Используется в циклических конструкциях или для выполнения императивного кода. |
| сделанный | В подробном синтаксисе указывает конец блока кода в циклическом выражении. |
| удрученный | Используется для преобразования в тип, который находится ниже в цепочке наследования. |
| Downto | В выражении for , используемом для обратного отсчета. |
| Элиф | Используется в условном ветвлении. Краткая форма еще, если. |
| еще | Используется в условном ветвлении. |
| конец |
В определениях типов и расширениях типов указывает конец раздела определений элементов. В подробном синтаксисе используется для указания конца блока кода, который начинается с ключевого слова begin. |
| исключение | Используется для объявления типа исключения. |
| внешний | Указывает, что объявленный программный элемент определен в другом двоичном файле или сборке. |
| ложный | Используется как логический литерал. |
| в конце концов | Используется вместе с попыткой ввести блок кода, который выполняется независимо от того, происходит ли исключение. |
| за | Используется в циклических конструкциях. |
| веселье | Используется в лямбда-выражениях, также известных как анонимные функции. |
| функция | Используется в качестве более короткой альтернативы ключевому слову fun и выражению соответствия в лямбда-выражении с сопоставлением с шаблоном в одном аргументе. |
| Глобальный | Используется для ссылки на пространство имен .NET верхнего уровня. |
| если | Используется в условных ветвящихся конструкциях. |
| в | Используется для выражений последовательности и, в подробном синтаксисе, для отделения выражений от привязок. |
| унаследовать | Используется для указания базового класса или базового интерфейса. |
| в соответствии | Используется для обозначения функции, которая должна быть интегрирована непосредственно в код вызывающего абонента. |
| интерфейс | Используется для объявления и реализации интерфейсов. |
| внутренний | Используется для указания того, что элемент виден внутри сборки, но не снаружи. |
| ленивый | Используется для указания вычисления, которое должно выполняться только тогда, когда требуется результат. |
| позволять | Используется для привязки или привязки имени к значению или функции. |
| позволять! | Используется в асинхронных рабочих процессах для привязки имени к результату асинхронного вычисления или в других выражениях вычислений, используется для привязки имени к результату, который имеет тип вычисления. |
| матч | Используется для ветвления путем сравнения значения с шаблоном. |
| член | Используется для объявления свойства или метода в типе объекта. |
| модуль | Используется для связывания имени с группой связанных типов, значений и функций, чтобы логически отделить его от другого кода. |
| изменчивый | Используется для объявления переменной, то есть значения, которое можно изменить. |
| Пространство имен | Используется для связывания имени с группой связанных типов и модулей, чтобы логически отделить его от другого кода. |
| новый |
Используется для объявления, определения или вызова конструктора, который создает или может создавать объект. Также используется в общих ограничениях параметров, чтобы указать, что тип должен иметь определенный конструктор. |
| не | На самом деле не ключевое слово. Однако, не структура в комбинации используется как ограничение общего параметра. |
| ноль |
Указывает на отсутствие объекта. Также используется в общих ограничениях параметров. |
| из | Используется в различимых объединениях для указания типа категорий значений, а также в объявлениях делегатов и исключений. |
| открыть | Используется, чтобы сделать содержимое пространства имен или модуля доступным без квалификации. |
| или же |
Используется с логическими условиями в качестве логического или оператора. Эквивалент || Также используется в ограничениях членов. |
| переопределение | Используется для реализации версии абстрактного или виртуального метода, которая отличается от базовой версии. |
| частный | Ограничивает доступ члена к коду того же типа или модуля. |
| общественности | Разрешает доступ к члену вне типа. |
| запись | Используется для указания того, что функция является рекурсивной. |
| вернуть | Используется для указания значения, предоставляемого в результате выражения вычисления. |
| вернуть! | Используется для указания выражения вычисления, которое при оценке предоставляет результат содержащего выражения вычисления. |
| Выбрать | Используется в выражениях запросов, чтобы указать, какие поля или столбцы нужно извлечь. Обратите внимание, что это контекстное ключевое слово, что означает, что оно на самом деле не является зарезервированным словом и действует только как ключевое слово в соответствующем контексте. |
| статический | Используется для указания метода или свойства, которое может быть вызвано без экземпляра типа, или элемента значения, который используется всеми экземплярами типа. |
| структура |
Используется для объявления типа структуры. Также используется в общих ограничениях параметров. Используется для совместимости с OCaml в определениях модулей. |
| затем |
Используется в условных выражениях. Также используется для выполнения побочных эффектов после строительства объекта. |
| в | Используется в циклах for для обозначения диапазона. |
| правда | Используется как логический литерал. |
| пытаться | Используется для введения блока кода, который может генерировать исключение. Используется вместе с или наконец. |
| тип | Используется для объявления класса, записи, структуры, различаемого объединения, типа перечисления, единицы измерения или сокращения типа. |
| вентиляционный | Используется для преобразования в тип, который находится выше в цепочке наследования. |
| использование | Используется вместо let для значений, которые требуют вызова Dispose для освобождения ресурсов. |
| использовать! | Используется вместо пусть! в асинхронных рабочих процессах и других выражениях вычислений для значений, которые требуют, чтобы Dispose вызывался для освобождения ресурсов. |
| вал | Используется в подписи для обозначения значения или в типе для объявления члена в ограниченных ситуациях. |
| недействительным | Указывает тип .NET void. Используется при взаимодействии с другими языками .NET. |
| когда | Используется для логических условий (когда охранники) при сопоставлении с образцом и для введения условия ограничения для параметра универсального типа. |
| в то время как | Вводит циклическую конструкцию. |
| с | Используется вместе с ключевым словом соответствия в выражениях сопоставления с образцом. Также используется в объектных выражениях, выражениях копирования записей и расширениях типов для представления определений членов и для представления обработчиков исключений. |
| Уступать | Используется в выражении последовательности для получения значения последовательности. |
| Уступать! | Используется в выражении вычисления, чтобы добавить результат данного выражения вычисления в коллекцию результатов для содержащего выражения вычисления. |
В определениях типов и расширениях типов указывает конец раздела определений элементов.
В подробном синтаксисе используется для указания конца блока кода, который начинается с ключевого слова begin.
Используется для объявления, определения или вызова конструктора, который создает или может создавать объект.
Также используется в общих ограничениях параметров, чтобы указать, что тип должен иметь определенный конструктор.
Указывает на отсутствие объекта.
Также используется в общих ограничениях параметров.
Используется с логическими условиями в качестве логического или оператора. Эквивалент ||
Также используется в ограничениях членов.
Используется для объявления типа структуры.
Также используется в общих ограничениях параметров.
Используется для совместимости с OCaml в определениях модулей.
Используется в условных выражениях.
Также используется для выполнения побочных эффектов после строительства объекта.
Некоторые зарезервированные ключевые слова пришли из языка OCaml —
| аср | земельные участки | лор | LSL | LSR | lxor | модификация | сиг |
Некоторые другие зарезервированные ключевые слова сохраняются для будущего расширения F #.
| атомное | перерыв | проверено | составная часть | Const | ограничение | конструктор |
| Продолжить | нетерпеливый | событие | внешний | фиксированный | функтор | включают |
| метод | Mixin | объект | параллельно | процесс | защищенный | чистый |
| запечатанный | tailcall | черта характера | виртуальный | летучий |
Комментарии в F #
F # предоставляет два типа комментариев —
- Однострочный комментарий начинается с символа //.
- Многострочный комментарий начинается с (* и заканчивается *).
Базовая точка входа в программу и приложение в F #
Как правило, у вас нет явной точки входа для программ на F #. Когда вы компилируете приложение F #, последний файл, предоставленный компилятору, становится точкой входа, и все операторы верхнего уровня в этом файле выполняются сверху вниз.
Хорошо написанная программа должна иметь один оператор верхнего уровня, который будет вызывать основной цикл программы.
Очень минималистичная F # -программа, которая будет отображать «Hello World» на экране —
(* This is a comment *) (* Sample Hello World program using F# *) printfn "Hello World!"
Когда вы компилируете и запускаете программу, она выдает следующий вывод: