Есть ли способ создать меню с несколькими вариантами, используя F #?Через прохождение команд - PullRequest
1 голос
/ 10 мая 2019

Я новичок в F #, и в настоящее время я создаю Меню для реализации в программе, которую я кодирую, но на данный момент мне немного сложно.Есть ли способ иметь меню, которое запрашивает ввод для пользователя в цикле до выхода?

Ответы [ 2 ]

1 голос
/ 10 мая 2019

Вы можете попробовать что-то вроде этого:

open System

let printMenu () =
    printfn "Menu: "
    printfn "1. Do this"
    printfn "2. Do that"
    printfn "3. Exit"
    printf "Enter your choise: "

let getInput () = Int32.TryParse (Console.ReadLine())

let doThis () = printfn "Do this..."
let doThat () = printfn "Do that..."

let rec menu () =
    printMenu()
    match getInput() with
    | true, 1 -> 
        doThis()
        menu()
    | true, 2 -> 
        doThat()
        menu()
    | true, 3 -> ()
    | _ -> menu()


menu ()
0 голосов
/ 10 мая 2019

Самый простой способ - поместить его в рекурсивный цикл:

open System

[<EntryPoint>] let main argv =
    let rec waitForInput() =
        Console.WriteLine("Hello. Type X for Exit.")
        let input = Console.ReadLine()
        match input with 
        | "a" -> waitForInput()
        | "b" -> waitForInput()
        | "X" -> ()
        | _ -> waitForInput()


    waitForInput()

    0 // return an integer exit code

Это завершится на X. В противном случае спросите снова.

...