Ошибка доступа к данным в списке кортежей F # - PullRequest
0 голосов
/ 08 ноября 2019

Невозможно назначить позицию для 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.)))

1 Ответ

0 голосов
/ 08 ноября 2019

Я нашел решение из "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.)))
...