Как передать аргумент в Async.RunSynchronously?
Я пытаюсь сделать следующее:
Async.RunSynchronously (moveAsync brick)
Конечно, это не компилируется:
Значение или конструктор «кирпич» не определен
Я обновил свой код, но все еще сталкиваюсь с той же проблемой, связанной с передачей аргумента в Async.RunSynchronously.
Клиент:
открыть LegoCommands
[<EntryPoint>]
let main argv =
connectAsync |> Async.RunSynchronously |> ignore
moveAsync |> Async.RunSynchronously |> ignore
speakAsync |> Async.RunSynchronously |> ignore
0 // return an integer exit code
Домен:
В настоящее время мой код работает, устанавливая внешнюю переменную-член, и мои функции ссылаются на нее.
let brick = Brick(UsbCommunication())
Я не хочу этого.
module LegoCommands
open Lego.Ev3.Core
open Lego.Ev3.Desktop
open System.Threading.Tasks
open Arguments
let brick = Brick(UsbCommunication())
let awaitTask (task: Task) = task |> Async.AwaitIAsyncResult
|> Async.Ignore
let connectAsync = async {
do! brick.ConnectAsync() |> awaitTask }
let moveAsync = async {
do! brick.DirectCommand.TurnMotorAtPowerForTimeAsync(motors, power, uint32 duration, breakEnabled) |> awaitTask }
let speakAsync = async {
do! brick.DirectCommand.PlayToneAsync(volume, frequency, duration) |> awaitTask }