Skip to content

Правила форматирования функций ​


§4 Определение функции ​

§4.1 Сигнатура функции. Между именем функции и списком параметров не ставится пробел.

// ✅ Правильно
foo: (a: Int, b: Int) -> Int = a + b

// ❌ Неправильно
foo : (a: Int, b: Int) -> Int = a + b

§4.2 Перенос строки в списке параметров. Когда список параметров превышает ширину строки, каждый параметр располагается на отдельной строке с замыкающей запятой.

// При превышении ширины строки
very_long_function_name: (first_param: Int, second_param: Int, third_param: Int) -> Int = first_param + second_param + third_param

// После форматирования
very_long_function_name:
    first_param: Int,
    second_param: Int,
    third_param: Int,
) -> Int = first_param + second_param + third_param

§4.3 Тип возвращаемого значения. Тип возвращаемого значения соединяется со списком параметров с помощью ->, по одному пробелу до и после.

// ✅ Правильно
foo: () -> Int = 1

// ❌ Неправильно
foo: () ->Int = 1
foo: ()-> Int = 1
foo:()-> Int = 1

§4.4 Тело функции. Тело функции отделяется от типа возвращаемого значения одним пробелом.

// ✅ Правильно
foo: () -> Int = 1

// ❌ Неправильно (два пробела)
foo: () -> Int  = 1

§7 Вызов функции ​

§7.1 Список аргументов. Аргументы разделяются запятыми, после запятой ставится один пробел.

// ✅ Правильно
foo(1, 2, 3)

// ❌ Неправильно
foo(1,2,3)
foo(1 , 2 , 3)

§7.2 Именованные аргументы. Именованные аргументы используют формат name = value.

// ✅ Правильно
foo(x = 1, y = 2)

// ❌ Неправильно
foo(x=1, y=2)

§7.3 Перенос аргументов. Когда список аргументов превышает ширину строки, каждый аргумент располагается на отдельной строке с замыкающей запятой.

// При превышении ширины строки
very_long_function_name(first_argument, second_argument, third_argument)

// После форматирования
very_long_function_name(
    first_argument,
    second_argument,
    third_argument,
)

§12 Lambda-выражение ​

§12.1 Формат Lambda. Lambda использует формат (params) => body.

// ✅ Правильно
f = (x) => x + 1

// Одновыраженное тело
f = (x) => x * 2

// Многооператорное тело
f = (x) => {
    y = x + 1
    y * 2
}