【问题标题】:Error on accessing data in a list of tuples F#访问元组列表中的数据时出错 F#
【发布时间】:2019-11-08 10:39:04
【问题描述】:

无法从元组列表中为View.Pin分配位置(实际程序中有300个元组),请评论如何解决。

错误:“列表”类型与“视图元素”类型不兼容

let tokyo = Position(35.652832, 139.839478)

// create sample tuples
let t1 = ("35", 48.856, 2.3522)
let t2 = ("32", 51.5074, -0.1278)
let t3 = ("25", 50.9513, 1.8587)

// create sample list
let lst = [ t1; t2; t3 ]

let map =
    View.Map
        (hasZoomEnabled = true, hasScrollEnabled = true,
         pins = [ lst |> List.map (fun (_, a, b) -> View.Pin(Position(a, b), label = "Dummy", pinType = PinType.Place)) ],
         requestedRegion = MapSpan.FromCenterAndRadius(tokyo, Distance.FromKilometers(300.)))

【问题讨论】:

  • 请提供minimal reproducible example。如果我们不知道所涉及的任何函数的类型是什么,我们将无法帮助您修复类型错误。

标签: xamarin model-view-controller f# elmish


【解决方案1】:

我从“https://msdn.microsoft.com/en-us/visualfsharpdocs/conceptual/list.map%5B%27t%2C%27u%5D-function-%5Bfsharp%5D”找到了解决方案

令我惊讶的是,F# 是一种很棒的函数式语言,只需几行代码即可处理大型数据集。

 let view (model : Model) dispatch =

        // A list of 300 tuples
        let jpnDatas = jsonData.jpnData

        let pins =
            jpnDatas
            |> List.map (fun (_, a, _, _, b, c) -> View.Pin(Position(b, c), label = a, pinType = PinType.Place))

        let tokyo = Position(35.652832, 139.839478)

        let map =
            View.Map
                (hasZoomEnabled = true, hasScrollEnabled = true,
                 pins = [ for pin in pins do yield pin ],
                 requestedRegion = MapSpan.FromCenterAndRadius(tokyo, Distance.FromKilometers(300.)))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 2016-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多