2010-06-05 102 views
0

我只是在编程我想从C#到F#隐蔽一些代码初学者,转换一个C#代码到F#

我已经encotered验证码:

float[] v1=new float[10]; 

... 

//Enqueue the Execute command. 
Queue.Execute(kernelVecSum, null, **new long[] { v1.Length }**, null, null); 

我以前问如何转换v1对象, 我想我知道怎么样, 但是我该如何使用函数调用,特别是函数参数的new long[] { v1.Length }部分,new long[] { v1.Length }是什么意思?

我创建V1这样let v1 = [| for i in 1.0 .. 10.0 -> 2.0 * i |]

它是正确的吗? 或应该使用v1这样的let v1 = ref [| for i in 1.0 .. 10.0 -> 2.0 * i |]

回答

0
Queue.Execute(kernelVecSum, null, [| int64 (v1.Length) |], null, null) 

+0

这创造'V1的数组.Length'元素全部初始化为零,这不是C#代码的作用。 – Brian 2010-06-05 18:39:38

+0

哦,是的,我读得太快,承担太多:-)在这里,我们去... – Mau 2010-06-05 18:47:22

+0

非常感谢你的每一个,答案工作,并帮助我提前移植代码 – Brendon 2010-06-05 19:49:19

2

这实际上更多的是C#的问题......你可能会这样标记它。

在C#

new long[] { v1.Length } 

创建的long秒的新的数组,包含一个单一的元素,其值是v1.Length。在F#中它将是例如

[| int64 v1.Length |] 

(在任何情况下,不,你不希望在F#代码ref。而你仍建议here尚未纠正的数据类型。)

+0

非常感谢你每一个,答案正在工作,并帮助我移植代码 – Brendon 2010-06-05 19:46:45