2009-10-11 48 views
1

let parallelTest n = Color(Color.DeepPink,Triangles(sphere n));;我在这个F#代码中做错了什么?

的Parallel.For(0,10,新的行动(parallelTest));;

错误消息: 错误FS0001:类型不匹配。期望 int - >单元 ,但给出了一个 int - >场景。 类型“单元”不匹配类型“场景”

,我会很高兴,如果一些身体帮我。

+0

根据你的代码和你的一些评论,看起来你并没有完全处于F#编程风格的状态。你可以发布你的代码并描述你实际上想要做什么吗? – Juliet 2009-10-11 19:34:55

回答

0

在哪个位置发生此错误信息? (我不能重现的错误,因为我不知道你使用某些功能的delcarations)

我想以下几点:Parallel.For需要一个int -> unit(在标准.NET Action<int>),但parallelTest有不同的类型( int -> scene),因此它是不兼容的。

什么是你想实现与整个代码?

+0

嗨达里奥, 感谢您的帮助,我试图做表面subdvision并行,但我尝试使用此Parallel.For作为一种意思,使我的工作容易做到并行版本。你有什么提示可以让我轻松并且平行地做到这一点吗?再次感谢。 – Angelica 2009-10-11 16:23:20

4

撰写函数ignore使其返回unit

Parallel.For(0, 10, parallelTest >> ignore) 
+0

嗨毛里西奥,谢谢你的帮助。有用!!!!!!!但现在我需要知道我该如何返回一个场景类型?再次感谢你的帮助。 – Angelica 2009-10-11 17:49:36

+0

Parallel.For不返回任何值。这可能会帮助你:http://weblogs.asp.net/podwysocki/archive/2009/02/23/adding-parallel-extensions-to-f.aspx。如果您有更多疑问,请创建其他问题。 – 2009-10-11 18:31:28

3

如果你想10个结果,或许你想

[| for i in 0..9 do 
     async { return parallelTest i } |] 
|> Async.Parallel 
|> Async.RunSynchronously 

这将返回的10个场景结果的数组。