F # - Базовый синтаксис

Вы видели базовую структуру программы F #, поэтому вам будет легко понять другие базовые строительные блоки языка программирования F #.

Токены в F #

Программа на F # состоит из различных токенов. Токен может быть ключевым словом, идентификатором, константой, строковым литералом или символом. Мы можем разделить токены F # на два типа:

  • Keywords
  • Символ и операторы

Ключевые слова F #

В следующей таблице показаны ключевые слова и краткие описания ключевых слов. Мы обсудим использование этих ключевых слов в следующих главах.

Ключевое слово Описание
abstract Указывает на метод, который либо не имеет реализации в том типе, в котором он объявлен, либо является виртуальным и имеет реализацию по умолчанию.
and Используется во взаимно рекурсивных привязках, в объявлениях свойств и с несколькими ограничениями на общие параметры.
as Используется для присвоения текущему объекту класса имени объекта. Также используется для присвоения имени целому шаблону в рамках соответствия шаблону.
assert Используется для проверки кода во время отладки.
base Используется как имя объекта базового класса.
begin В подробном синтаксисе указывает начало блока кода.
class В подробном синтаксисе указывает на начало определения класса.
default Указывает на реализацию абстрактного метода; используется вместе с объявлением абстрактного метода для создания виртуального метода.
delegate Используется для объявления делегата.
do Используется в конструкциях цикла или для выполнения императивного кода.
done В подробном синтаксисе указывает конец блока кода в выражении цикла.
downcast Используется для преобразования в тип, который находится ниже в цепочке наследования.
downto В for выражение, используемое при обратном счете.
elif Используется в условном ветвлении. Краткая форма else if.
else Используется в условном ветвлении.
end

В определениях типов и расширениях типов указывает на конец раздела определений элементов.

В подробном синтаксисе используется для указания конца блока кода, который начинается с ключевого слова begin.

exception Используется для объявления типа исключения.
extern Указывает, что объявленный программный элемент определен в другом двоичном файле или сборке.
false Используется как логический литерал.
finally Используется вместе с попыткой ввести блок кода, который выполняется независимо от того, возникает ли исключение.
for Используется в циклических конструкциях.
fun Используется в лямбда-выражениях, также известных как анонимные функции.
function Используется как более короткая альтернатива ключевому слову fun и выражению соответствия в лямбда-выражении, которое имеет сопоставление с образцом для одного аргумента.
global Используется для ссылки на пространство имен .NET верхнего уровня.
if Используется в конструкциях условного ветвления.
in Используется для выражений последовательности и, в подробном синтаксисе, для отделения выражений от привязок.
inherit Используется для указания базового класса или базового интерфейса.
inline Используется для обозначения функции, которую следует интегрировать непосредственно в код вызывающего абонента.
interface Используется для объявления и реализации интерфейсов.
internal Используется для указания того, что элемент виден внутри сборки, но не за ее пределами.
lazy Используется для указания вычисления, которое должно выполняться только тогда, когда требуется результат.
let Используется для связывания или привязки имени к значению или функции.
let! Используется в асинхронных рабочих процессах для привязки имени к результату асинхронного вычисления или, в других выражениях вычислений, используется для привязки имени к результату, имеющему тип вычисления.
match Используется для перехода путем сравнения значения с шаблоном.
member Используется для объявления свойства или метода в типе объекта.
module Используется для связывания имени с группой связанных типов, значений и функций, чтобы логически отделить его от другого кода.
mutable Используется для объявления переменной, то есть значения, которое можно изменить.
namespace Используется для связывания имени с группой связанных типов и модулей, чтобы логически отделить его от другого кода.
new

Используется для объявления, определения или вызова конструктора, который создает или может создавать объект.

Также используется в общих ограничениях параметров, чтобы указать, что тип должен иметь определенный конструктор.

not На самом деле это не ключевое слово. Однако комбинация не структуры используется в качестве ограничения общего параметра.
null

Указывает на отсутствие объекта.

Также используется в общих ограничениях параметров.

of Используется в размеченных объединениях для указания типа категорий значений, а также в объявлениях делегатов и исключений.
open Используется, чтобы сделать содержимое пространства имен или модуля доступным без уточнения.
or

Используется с логическими условиями как логическое значение или оператор. Эквивалентно ||.

Также используется в ограничениях членов.

override Используется для реализации версии абстрактного или виртуального метода, которая отличается от базовой версии.
private Ограничивает доступ члена к коду того же типа или модуля.
public Разрешает доступ к члену извне.
rec Используется, чтобы указать, что функция рекурсивна.
return Используется для указания значения, предоставляемого как результат выражения вычисления.
return! Используется для обозначения выражения вычисления, которое при оценке предоставляет результат содержащего выражения вычисления.
select Используется в выражениях запроса, чтобы указать, какие поля или столбцы нужно извлекать. Обратите внимание, что это контекстное ключевое слово, что означает, что на самом деле это не зарезервированное слово, и оно действует только как ключевое слово в соответствующем контексте.
static Используется для обозначения метода или свойства, которое может быть вызвано без экземпляра типа, или члена значения, который является общим для всех экземпляров типа.
struct

Используется для объявления типа структуры.

Также используется в общих ограничениях параметров.

Используется для совместимости с OCaml в определениях модулей.

then

Используется в условных выражениях.

Также используется для выполнения побочных эффектов после создания объекта.

to Используется в циклах for для обозначения диапазона.
true Используется как логический литерал.
try Используется для представления блока кода, который может генерировать исключение. Используется вместе с или finally.
type Используется для объявления класса, записи, структуры, различаемого объединения, типа перечисления, единицы измерения или аббревиатуры типа.
upcast Используется для преобразования в тип, который находится выше в цепочке наследования.
use Используется вместо let для значений, требующих вызова Dispose для освобождения ресурсов.
use! Используется вместо let! в асинхронных рабочих процессах и других выражениях вычислений для значений, требующих вызова Dispose для освобождения ресурсов.
val Используется в подписи для указания значения или в типе для объявления члена в ограниченных ситуациях.
void Указывает тип пустоты .NET. Используется при взаимодействии с другими языками .NET.
when Используется для логических условий (когда охранники) при совпадении с шаблоном и для введения предложения ограничения для параметра универсального типа.
while Представляет конструкцию цикла.
with Используется вместе с ключевым словом match в выражениях сопоставления с образцом. Также используется в выражениях объектов, выражениях копирования записей и расширениях типов для введения определений членов и обработчиков исключений.
yield Используется в выражении последовательности для получения значения для последовательности.
yield! Используется в выражении вычисления для добавления результата данного выражения вычисления к коллекции результатов для содержащего выражение вычисления.

Некоторые зарезервированные ключевые слова пришли из языка OCaml -

asr земля лор lsl ЛСР lxor мод сиг

Некоторые другие зарезервированные ключевые слова сохранены для будущего расширения F #.

атомный сломать проверил составная часть const ограничение constructor
continue eager event external fixed functor include
method mixin object parallel process protected pure
sealed tailcall trait virtual volatile

Comments in F#

F# provides two types of comments −

  • One line comment starts with // symbol.
  • Multi line comment starts with (* and ends with *).

A Basic Program and Application Entry Point in F#

Generally, you don’t have any explicit entry point for F# programs. When you compile an F# application, the last file provided to the compiler becomes the entry point and all top level statements in that file are executed from top to bottom.

A well-written program should have a single top-level statement that would call the main loop of the program.

A very minimalistic F# program that would display ‘Hello World’ on the screen −

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

When you compile and execute the program, it yields the following output −

Hello World!