[英]Using C# Linq ForEach() in F#
我正在将一些代码从C#转换为F#,并且我需要跨越F#的以下几行:
List<VirtualMachine> vmList = new List<VirtualMachine>();
m_vimClient.FindEntityViews(typeof(VirtualMachine), null, null, null).ForEach(vm => vmList.Add((VirtualMachine)vm));
return vmList;
我做了以下工作:
let vmList = vimClient.FindEntityViews(typedefof<VirtualMachine>, null, null, null).ForEach(vm => vmList.Add((VirtualMachine)vm))
vmList
不幸的是,Intellisense告诉我vm
和vmList
没有在F#代码的ForEach()
部分中定义。
我该如何解决这个问题?
您使用的lambda语法是C#语法。 在F#中,lambda的定义类似于fun vm -> …
。
也就是说,您根本不需要ForEach
。 C#版本可以不用lambda编写为:
var vmList = m_vimClient.FindEntityViews(typeof(VirtualMachine), null, null, null)
.Cast<VirtualMachine>()
.ToList();
在F#中,这将是:
let vmList = m_vimClient.FindEntityViews(typedefof<VirtualMachine>, null, null, null)
|> Seq.cast<VirtualMachine>
|> Seq.toList
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.