質問

私が可変データ構造の存しに行った時にアクセスすると、この奇妙な誤差

こちらは自分のコード

type vector = {a:float;b:float};;
type vec_store = {mutable seq:vector array;mutable size:int};;

let max_seq_length = ref 200;;

exception Out_of_bounds;;
exception Vec_store_full;;

let vec_mag {a=c;b=d} = sqrt( c**2.0 +. d**2.0);;


let make_vec_store() = 
    let vecarr = ref ((Array.create (!max_seq_length)) {a=0.0;b=0.0}) in
         {seq= !vecarr;size=0};;

私はこの存のトップレベル

let x = make _ vec _store;;

してい x.size 取得しこのエラー

Error: This expression has type unit -> vec_store
       but an expression was expected of type vec_store

していただきましたが問題なのでしょうか。と思いこんでいます。

おかげさ ファイサル

役に立ちましたか?

解決

make_vec_store である。という時に let x = make_vec_store, は、設定した機能するようにする場合は筆記 let x = 1, このよう×1何 したい の呼び出しの結果をする機能です。による make_vec_store's"の定義か () (としても知られる"ユニット")の引数は、どうい let x = make_vec_store ().

他のヒント

試x=make_vec_store()

どのフォローアップとして、また優れたanswereます。とを教えることができる例:

# let x = make_vec_store;;
val x : unit -> vec_store = <fun>

を返す機能を果たすとともに、repl伝えていきます。からご覧いただけます出力するxタイプ <fun> を必要としないパラメータ unit 戻り値の型 vec_store.

ここに宣言

# let x = 1;;
val x : int = 1

分かるのでこのxはint型と値が1になりました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top