Как передать аргумент в Async.RunSynchronously?Как передать аргумент в 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 }
Почему не это компилировать? Я бы ожидал этого. Кроме того, выглядит лучше;) – scrwtp
Вы можете связать два вопроса вместе. –