カスタムデータ型を設定する
type vector = {a:float;b:float};
ベクトル型の配列を初期化したいのですが、何も含まれていません。長さxの空の配列だけです。
以下
let vecarr = Array.create !max_seq_length {a=0.0;b=0.0}
配列の初期化を{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
OCaml では初期化されていない配列を持つことはできません。しかし、次のように考えてみてください。初期化されていない値が原因でプログラムに再現困難なバグが発生することは決してありません。
最終的に配列に配置したい値がまだ利用できない場合は、配列を作成するのが早すぎる可能性がありますか? Array.init
以前に作成して一時的に未初期化のままにすることなく、必要な入力が利用可能な正確な瞬間に作成するために使用することを検討してください。
この関数Array.init
は、各セルの初期値を計算するために使用する関数を引数に取ります。
空の配列、つまり [||] を使用して、配列を初期化および ' することができます。実行中:
let a = [||];;
次のように評価されます。
val a : 'a array = [||]
これに追加できます。長さが 0 なので何も設定できませんが、アカデミックな目的ではこれが役立ちます。