Правила форматирования функций
§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
}