Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 在循环中插入到数组中_Xml_F#_F# Data - Fatal编程技术网

Xml 在循环中插入到数组中

Xml 在循环中插入到数组中,xml,f#,f#-data,Xml,F#,F# Data,我试图创建一个可用经度和纬度对的数组,它们以XML格式返回。我使用F数据来实现它,这是我到目前为止所拥有的 // #r @"load data dll" open FSharp.Data type Html = XmlProvider<"<my-url>", Global=true> let html = Html.GetSample() // Create an availableList array, so that it would have pairs of

我试图创建一个可用经度和纬度对的数组,它们以XML格式返回。我使用F数据来实现它,这是我到目前为止所拥有的

// #r @"load data dll"

open FSharp.Data

type Html = XmlProvider<"<my-url>", Global=true>
let html = Html.GetSample()

// Create an availableList array, so that it would have pairs of available Latitude and Longitude
let availableList = Array.create

let getCoordinates available = 
  for item in html.Objects do
    if item.StatusParkPlace = available then
      // If true, push item.Latitude and item.Longitude into availableList 

let main = 
  getCoordinates true

main

在函数式编程中,通过迭代数据和项到新列表来避免建立列表。这是一种势在必行的方法,依赖于改变共享状态

在你的例子中,考虑这样做:

let getCoordinates available = 
  html.Objects
  |> Seq.filter (fun item -> item.StatusParkPlace = available)
  |> Seq.toList

let main = 
  let availableList = getCoordinates true
这仍然是相同的结果,从另一个序列构建一个列表。但这一次,您让语言来处理它的实现,您只需提供一个函数,您希望将每个项应用到一个列表中的另一个列表中


在上面的例子中。Seq.filter将通过html.Objects执行循环,并仅将与函数匹配的项返回到新序列中。然后,它被转换成一个列表,在F中,优先选择列表而不是数组来保存结果。如果没有toList,它将只是一个静止的列表。

在函数式编程中,尝试通过迭代数据和项目来创建一个新列表,以避免建立列表。这是一种势在必行的方法,依赖于改变共享状态

在你的例子中,考虑这样做:

let getCoordinates available = 
  html.Objects
  |> Seq.filter (fun item -> item.StatusParkPlace = available)
  |> Seq.toList

let main = 
  let availableList = getCoordinates true
这仍然是相同的结果,从另一个序列构建一个列表。但这一次,您让语言来处理它的实现,您只需提供一个函数,您希望将每个项应用到一个列表中的另一个列表中


在上面的例子中。Seq.filter将通过html.Objects执行循环,并仅将与函数匹配的项返回到新序列中。然后,它被转换成一个列表,在F中,优先选择列表而不是数组来保存结果。如果没有toList,它将只是一个静物。

谢谢你,@daveshaw,我一定要研究一下序列。您提供的解决方案看起来比我的要简单得多,这可能就是函数式编程的优点。@Kelb56-确实是:谢谢您,@daveshaw,我一定要研究序列。您提供的解决方案看起来比我的简单得多,这可能就是函数式编程的美妙之处。@Kelb56-它确实是: