在C#和Java中,可以像这样创建一个字节数组
byte[] b = new byte[x];
Run Code Online (Sandbox Code Playgroud)
where x
表示数组的大小.我想做的是在F#中做同样的事情.我已经搜索了如何操作并在文档中查找它.我认为我可能使用了错误的搜索词,因为我无法找到方法.
到目前为止我发现的是Array.create
可以像这样使用:
let b = Array.create x ( new Byte() )
Run Code Online (Sandbox Code Playgroud)
还有另一种方法可以做到这一点,它更类似于在C#和Java中完成的方式吗?
Gen*_*ski 12
最接近的F#模拟是Array.zeroCreate:
let b: byte [] = Array.zeroCreate x
Run Code Online (Sandbox Code Playgroud)
0
在Java和C#平台上,F#不是将隐式数组元素初始化为字节,而是使数组元素的初始值明显.
至于dynamic size
的b
在F#它被定义一次x
值在分配并且不能被改变以后改变x
,类似于C#/爪哇,.
let b = Array.create<byte> x 0uy //Array.zeroCreate<byte> x
Run Code Online (Sandbox Code Playgroud)
我想你想要创建一个未初始化的数组并在以后填充它:
let arr = Array.zeroCreate 10
for i in 0..9 do
arr.[i] <- byte(i*i)
Run Code Online (Sandbox Code Playgroud)
这是你通常用C#/ Java做的方式,这在F#中是单一的.想一想; 如果你忘记初始化一些元素,你必须处理null
恶梦.
几乎在所有情况下,您始终可以通过Array模块或数组理解中的高阶函数替换上述过程:
let arr = Array.init 10 (fun i -> byte(i*i))
Run Code Online (Sandbox Code Playgroud)
要么
let arr = [| for i in 0..9 do -> byte(i*i)|]
Run Code Online (Sandbox Code Playgroud)
看看这个MSDN页面 ; 它包含有关在F#中使用Array的有用信息.