Вы видели базовую структуру программы на 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!"
Когда вы компилируете и запускаете программу, она выдает следующий вывод: