创建一个字节数组,在F#中动态大小数组、创建一个、字节、大小

由网友(雨落倾城夏未凉)分享简介:在C#和Java的字节数组可以这样创建In C# and Java a byte array can be created like thisbyte[] b = new byte[x];其中, X 表示数组的大小。我想要做的是做同样的事情在F#中。我已经寻找如何做到这一点,并在文件中寻找它。我想,我可能使用了错误...

在C#和Java的字节数组可以这样创建

In C# and Java a byte array can be created like this

byte[] b = new byte[x];

其中, X 表示数组的大小。我想要做的是做同样的事情在F#中。我已经寻找如何做到这一点,并在文件中寻找它。我想,我可能使用了错误的搜索词,因为我无法找出如何。

where x denotes the size of the array. What I want to do is to do the same thing in F#. I have searched for how to do it and looked for it in the documentation. I think that I'm probably using the wrong search terms because I can't find out how.

我到目前为止已经发现的是, Array.create 可以这样使用:

What I've found so far is that Array.create can be used like this:

let b = Array.create x ( new Byte() )

有另一种方式做到这一点是更类同的方式,它可以在C#和Java?

Is there another way to do it which is more similiar to the way it can be done in C# and Java?

推荐答案

我想你想创建一个未初始化数组并填入它:

I think you would want to create an uninitialized array and fill it later:

let arr = Array.zeroCreate 10
for i in 0..9 do
   arr.[i] <- byte(i*i)

这是你通常做在C#/ Java,它是unidiomatic在F#的方式。想想吧;如果你忘了初始化一些元素,你必须处理噩梦。

在大多数情况下,你总是可以从的阵列模块或阵列COM prehension:

In almost all cases, you can always replace the above procedure by high-order functions from Array module or array comprehension:

let arr = Array.init 10 (fun i -> byte(i*i))

let arr = [| for i in 0..9 -> byte(i*i)|]

看看这个MSDN页面;它包含了F#中使用数组有用的信息。

Take a look at this MSDN page; it contains useful information about using Array in F#.

阅读全文

相关推荐

最新文章