Учебники

F # — основной синтаксис

Вы видели базовую структуру программы на 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» на экране —

Live Demo

(* This is a comment *)
(* Sample Hello World program using F# *)
printfn "Hello World!"

Когда вы компилируете и запускаете программу, она выдает следующий вывод: