4

我创建了一个“游戏”类,并尝试使用我的 webpart 路径中的值来创建它的实例。

我的实例需要一个 playerName,所以我尝试使用 name 值创建一个

let g:game.Game = new game.Game()

let php =
request (fun r ->
    match r.queryParam "playerName" with
    | Choice1Of2 name ->  new game.Game(1,name,"hyy")//OK (sprintf "playerName: %s" name)
    | Choice2Of2 msg -> BAD_REQUEST msg)

let webPart = 
choose [
    path "/" >=> (OK "Home")
    path "/elm/api/create.php" >=> php
    ]
startWebServer defaultConfig webPart

但它不起作用,因为这个表达式应该是 HttpContext 类型而不是 Game 类型。

我想根据我的路径值创建一个实例并调用类的方法。

4

1 回答 1

3

第一:你不能从你的函数中返回 2 种不同的类型

let php =
    request (fun r ->
        match r.queryParam "playerName" with
        | Choice1Of2 name ->  new game.Game(1,name,"hyy")
                              ^^^^^^^^^^^
                              //should probably be a OK 
        //OK (sprintf "playerName: %s" name)
        | Choice2Of2 msg -> BAD_REQUEST msg)

然后你也应该 Jsonify 你的Game对象。所以可能你的代码应该看起来像这样

| Choice1Of2 name ->  
      new game.Game(1,name,"hyy")
      |> toJson
      |> OK

请替换toJson为您选择的 Json 库的调用

于 2017-02-02T11:30:04.860 回答