t27.aiEnglish

Функции

Вы узнаете

Два способа записать сигнатуру функции в t27 и тело с return.

fn add(a: u8, b: u8) -> u8 объявляет функцию с двумя входами u8 и результатом u8; тело в фигурных скобках заканчивается return. Компилятор принимает и стиль Zig, pub fn add(a: u8, b: u8) u8, без стрелки. Обобщений нет: fn id<T> — ошибка разбора. Тестовый прогон этого сайта проверяет константы и не вызывает функции, поэтому урок держит ожидаемые результаты константами рядом с ними.

Попробуйте

Напишите в плеере функцию sub в любом из двух стилей и проверьте, что вердикт чистый.

Открыть интерактивный урок →

t27 basics 12: a function signature, piece by piece
t27 basics 12: a function signature, piece by piece ↗

The pieces of a t27 function signature in both styles the compiler accepts, and the generics it does not. Lesson 12 of the t27 basics course.

specs/basics/12_functions.t27

// SPDX-License-Identifier: Apache-2.0
; t27 basics, lesson 12: Functions.
; A function takes typed inputs and returns a typed result.

module basics_12_functions;

pub fn add(a: u8, b: u8) -> u8 {
    return a + b;
}

pub fn twice(a: u8) u8 {
    return a + a;
}

pub const TWO_PLUS_THREE : u8 = 5;

test results_are_kept_as_constants {
    assert TWO_PLUS_THREE == 2 + 3;
}

Открыть спеку урока в плеере ↗

Все уроки