参照

書き換え可能なレコードの特殊な場合で,フィールド1つだけを持つ場合を伝統的に参照(reference)という。参照には特別な書き方がある。

まず,参照の生成には ref 関数。

# let p = ref 4;;
val p : int ref = {contents = 4}

ref は初期値を引数にとって,参照を返す。ref は多相的な関数なので引数の型は何でもいい。

# let s = ref "foo";;
val s : string ref = {contents = "foo"}

int ref とか string ref が参照の型。

参照の値を取り出すには前置演算子 ! を使う。

# !p;;
- : int = 4
# !s;;
- : string = "foo"

参照の書き換えは代入(assignment)と呼ぶことが多い。:= 演算子を使う。

# p := 7;;
- : unit = ()
# p;;
- : int ref = {contents = 7}

参照は型が決まっているので,違う型の値は代入できない。

# s := 77;;
Characters 5-7:
s := 77;;
^^
This expression has type int but is here used with type string

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください