Ос

Основи у F#

1 вправа

Про концепцію Основи

У F# усе, що має тип і може бути визначене, називається значенням. Сюди належать булеві значення (англ. Boolean), цілі числа і масиви, але також і функції. Цілі числа визначаються як одна або більше (послідовних) цифр і підтримують типові математичні оператори.

Присвоєння значення імені називається звʼязуванням. Звʼязування є незмінними, що робить їх схожими на константи в інших мовах. Звʼязування визначаються за допомогою ключового слова let.

Оскільки F# належить до статично типізованих мов, кожне звʼязування має тип. Зазначати тип звʼязування необовʼязково для більшості звʼязувань, адже виведення типів у F# зазвичай дає змогу визначити тип на основі значення.

// Automatically inferred type
let fingers = 10

Функції теж є звичайними звʼязуваннями, але з одним або кількома параметрами. Функція автоматично повертає свій останній вираз. Виведення типів працює і для більшості функцій: воно аналізує, з якими значеннями функцію викликають і яке значення вона повертає.

// Automatically inferred types for parameters and return type
let add x y = x + y

Щоб викликати функцію, треба вказати її назву й передати аргументи для кожного з її параметрів.

let five = add 2 3

Якщо тип звʼязування не вдається вивести, компілятор повідомить про помилку. Щоб це виправити, вкажімо тип звʼязування явно.

// Explicit type annotation
let fingers: int = 10

// Explicit type annotation (also for parameters)
let add (x: int) (y: int): int = x + y

Звʼязування у F# можна використовувати лише після того, як їх визначено. Використання звʼязування до того, як його визначено, призводить до помилки компіляції.

// Compile error as the add binding has not yet been defined
// let seven = add 3 + 4

let add x y = x + y

Для визначення області видимості використовуються значущі відступи: код відступає пробілами відносно рядка, який оголошує звʼязування. Типова домовленість - використовувати для відступу чотири пробіли.

let toes =
    let left = 5
    let right = 5
    left + right

let multiplyPlusTwo x y =
    let product = x * y
    product + 2

// Trying to access the left, right or product bindings
// here would result in a compile error

Звʼязування у F# (зокрема функції) зазвичай організовано в модулі. Модуль обʼєднує споріднену функціональність і визначається за допомогою ключового слова module. Визначення модуля має передувати його звʼязуванням:

module Calculator

let pi = 3.14

let add x y = x + y

F# підтримує два типи коментарів. Однорядкові коментарі починаються з //, а багаторядкові розміщують між (* і *).

Редагувати через GitHub Посилання відкривається в новому вікні або вкладці

Вивчити концепцію Основи