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!