//1 インスタンス作成時にメッセージを表示する「dotest」クラス
type dotest()=
do printfn "dotest class created"
//2 「msg」プロパティの表示と関数「printmsg」を実行する「lettest」クラス
type lettest()=
let msg="lettest-str"
let printmsg()=printfn "%s is done!" msg
//メンバーとして実装
member _.outmsg()=printfn "msg is %s" msg
member _.doprintmsg()=printmsg()
//インスタンス作成
let box1=new dotest() //この時点でdo処理が実行される
let box2=new lettest()
box2.outmsg()
box2.doprintmsg()
//出力結果:
//cl class created
//msg is lettest-str
//lettest-str is done!
構文:
①読み込み専用
member 自己識別子.値名 with get()=入手時の処理...
②書き込み専用
member 自己識別子.値名 with set(<引数>)=設定時の処理...
③読み込み・書き込みを行う
member 自己識別子.値名
with get()=入手時の処理...
and set(<引数>)=設定時の処理...
type propatytest(x)=
let mutable num=x //プロパティnumに引数xを代入
member _.readonly with get()=num
//readonlyが呼び出されたら,numの値を返す
member _.writeonly with set(n)=num<-n
//writeonlyが呼び出されたら,numに引数nの値を代入
member _.bothRW
with get()=num
and set(n)=num<-n
//上2つの機能を有する
//呼び出し(引数n=10)
let box=new propatytest(10)
//①読み込み
box.readonly|>printfn "%d"
//②21を書き込んで出力
box.writeonly<-21
box.readonly|>printfn "%d"
//③255を書き込んで出力
box.bothRW<-255
box.readonly|>printfn "%d"
//出力結果:
//10
//21
//255
また、F#では省略可能な引数を持つメソッドの定義も行えます
//構文(System.Runtime.InteropServicesが必要):
member _.メソッド名([<Optional; DefaultParameterValue(値)>] <引数>) =処理...