F# Преобразование списка типа A в тип B с помощью опций

Цель этой статьи — небольшая демонстрация того, как можно преобразовать список одного типа в другой тип в F#. Хотя в заголовке используется ‘Convert’, на самом деле это использование функции ‘map’ и возвращение совершенно нового списка.

Приведенный ниже код был написан в консольном приложении в .NET 6.

type Person = {
    name: string    
}

type Employee = {
    email: string
}

let ConvertPersonToEmployee
    (person: Person) : Employee =
    {
        email = person.name + "@fsharp.com"
    }

let ConvertPersonListToEmployeeList
    (people: List<Person> option) : List<Employee> option =
    match people with
    | None -> None
    | _ -> people.Value
           |> List.map ConvertPersonToEmployee
           |> Some

[<EntryPoint>]
let main argv =    

    let januaryJoiners : List<Person> option = Some [{ name = "Rob" }; { name = "Bob" }]
    let februaryJoiners : List<Person> option = None

    let januaryEmployees = ConvertPersonListToEmployeeList januaryJoiners
    let februaryEmployees = ConvertPersonListToEmployeeList februaryJoiners

    printfn $"January Employees: {januaryEmployees}"
    printfn $"February Employees: {februaryEmployees}"
    0
Вход в полноэкранный режим Выйти из полноэкранного режима

Вывести

January Employees: Some([{ email = "Rob@fsharp.com" }; { email = "Bob@fsharp.com" }])
February Employees: 
Ввести полноэкранный режим Выход из полноэкранного режима

Оцените статью
devanswers.ru
Добавить комментарий