我已经设置了自定义数据类型
type vector = {a:float;b:float};
Run Code Online (Sandbox Code Playgroud)
我想初始化一个类型向量但不包含任何内容的数组,只是一个长度为x的空数组.
下列
let vecarr = Array.create !max_seq_length {a=0.0;b=0.0}
Run Code Online (Sandbox Code Playgroud)
使数组init为{a = 0; b = 0},并将其保留为空白会给我带来错误.是我试图做甚至可能吗?
你什么都没有?当你检索新初始化数组的元素时,你必须得到一些东西,对吧?你期望得到什么?
如果您希望能够表达某个值无效或某种类型值的能力,那么您可以使用option
其值为或者的类型None
,或者Some value
:
let vecarr : vector option array = Array.create !max_seq_length None
match vecarr.(42) with
None -> doSomething
| Some x -> doSomethingElse
Run Code Online (Sandbox Code Playgroud)
你不能在OCaml中拥有一个未初始化的数组.但请以这种方式看待它:由于未初始化的值,您的程序中永远不会有难以重现的错误.
如果您最终想要放置在数组中的值尚不可用,那么您是否过早地创建了数组?考虑使用Array.init
在必要输入可用的确切时刻创建它,而不必提前创建它并使其暂时未初始化.
该函数Array.init
接受一个函数,它用于计算每个单元格的初始值.
归档时间: |
|
查看次数: |
2836 次 |
最近记录: |