.net IEnumerable<;T>;无法枚举或与seq不兼容<;T>;
我是新来F#但Seq应该和IEnumerable一样吗.net IEnumerable<;T>;无法枚举或与seq不兼容<;T>;,.net,f#,.net,F#,我是新来F#但Seq应该和IEnumerable一样吗 let test = makeAsyncRequestPage "some web page" |> Async.RunSynchronously |> getPageResult //Returns a Seq<HtmlNode> |> Seq.head<HtmlNode> |> fun h -> h.ChildNodes
let test = makeAsyncRequestPage "some web page"
|> Async.RunSynchronously
|> getPageResult //Returns a Seq<HtmlNode>
|> Seq.head<HtmlNode>
|> fun h -> h.ChildNodes.Nodes //IEnumerable<HtmlNode>
|> fun h -> [for row in h -> row]
let test=makeAsyncRequestPage“一些网页”
|>异步运行
|>getPageResult//返回一个Seq
|>序号头
|>fun h->h.ChildNodes.Nodes//IEnumerable
|>乐趣h->[用于h中的行->行]
运行代码时出现错误,h
是IEnumerable,出现以下错误:
“类型”(unit->System.Collections.Generic.IEnumerable)不是可以用此语法枚举其值的类型,即与seq、IEnumerable或IEnumerable都不兼容,并且没有GetEnumerator方法“
有什么不对,这应该按照我通知的那样工作。
h.ChildNodes.Nodes
是一种方法,因此您需要应用单位
参数:
let test = makeAsyncRequestPage "some web page"
|> Async.RunSynchronously
|> getPageResult //Returns a Seq<HtmlNode>
|> Seq.head<HtmlNode>
|> fun h -> h.ChildNodes.Nodes ()
|> fun h -> [for row in h -> row]
let test=makeAsyncRequestPage“一些网页”
|>异步运行
|>getPageResult//返回一个Seq
|>序号头
|>fun h->h.ChildNodes.Nodes()
|>乐趣h->[用于h中的行->行]
h.ChildNodes.Nodes
是一种方法,因此需要应用单元
参数:
let test = makeAsyncRequestPage "some web page"
|> Async.RunSynchronously
|> getPageResult //Returns a Seq<HtmlNode>
|> Seq.head<HtmlNode>
|> fun h -> h.ChildNodes.Nodes ()
|> fun h -> [for row in h -> row]
let test=makeAsyncRequestPage“一些网页”
|>异步运行
|>getPageResult//返回一个Seq
|>序号头
|>fun h->h.ChildNodes.Nodes()
|>乐趣h->[用于h中的行->行]
您在某个地方缺少了一个()
参数,可能是在h.ChildNodes.Nodes
之后,所以您尝试枚举一个函数单元->IEnumerable
,而不是IEnumerable
。感谢这是解决方案,我们现在对它视而不见。您是怎么看的,从错误消息中看不到它吗?通常当你有一个函数时,当你需要一个值,这意味着你没有在某个地方提供足够的参数。错误消息表明for表达式中的参数类型错误,这是前一行中h.Child.Nodes
的结果。您缺少()
参数,可能在h.ChildNodes.Nodes
之后,所以您尝试枚举一个函数unit->IEnumerable
,而不是IEnumerable
。感谢这是解决方案,我们现在对它视而不见。您是如何看待它的,从错误消息中看不到它吗?通常当你有一个函数时,当你需要一个值,这意味着你没有在某个地方提供足够的参数。错误消息表明for表达式中的参数具有错误的类型,这是前一行中h.Child.Nodes
的结果。此外,您不需要在Seq.head
调用中指定类型参数。我可能倾向于将最后两个lambda表达式合并为一个:|>fun h->[对于h.ChildNodes.Nodes()->行中的行]
而且您不需要在Seq.head
调用中指定类型参数。我可能倾向于将最后两个lambda表达式合并为一个:|>fun h->[对于h.ChildNodes.Nodes()->行中的行]