Задать вопрос
@to_east

F# передача параметров массивом?

Всем привет!
Есть ли возможность передавать в функцию параметры массивом, с последующей распаковкой
// parameters
let args: System.String[] = [|"12:50"; "rica"|]

// function
let some (time: string, costa: string)=
    "..."


P.S. Типа как в Python оператором астерикс (*)
  • Вопрос задан
  • 44 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
F# у нас язык со статической типизацией.
Как ты гарантируешь, что массив содержит ровно два элемента?
Собственно из-за этого нет встроенного оператора.
Попробуй вот такую функцию и скомбинируй её с уже имеющейся, которая принимает кортеж.
/// Преобразует массив из двух элементов в кортеж.
/// Для любых других входных массивов бросает ArgumentException.
let toPair (arr: 'T[]) : 'T * 'T =
    match arr with
    | [| x; y |] -> x, y
    | _ -> invalidArg "arr" "Array must contain exactly two elements"


Потом вот так можно будет использовать:
// parameters
let args: System.String[] = [|"12:50"; "rica"|]

// function
let some (time: string, costa: string)=
    "..."
// вариант раз
let res = args |> toPair |> some
// вариант два
let res = args |> (toPair >> some)
// вариант три
let res = some (toPair args)

Глянь ещё FSharpPlus - возможно там уже есть подходящая стрелочка.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы