スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

F#入門基本編落穂拾い その41 optional property settings

ウインドウのフォームのインスタンスをF#Interactiveから生成して開くには、
> open System.Windows.Forms
let form = new Form();;
 
val form : System.Windows.Forms.Form = System.Windows.Forms.Form, Text: 
 
> form.Show();;
val it : unit = ()
 
で開くことができるのですが、タイトルなどプロパティを設定して開くには
 
> form.Text <- "F#";;
val it : unit = ()
などとしてから開く必要があります。
このような場合、次のようにすると、コンストラクタ実行と同時にプロパティを設定してくれます。
 
> open System.Windows.Forms
let form = new Form(Text = "F#",TopMost = true);;
(プロパティ設定の順番は任意です。)
 
次は自分でoptional property settingできるクラスを作ってみます。
 
type myPropertySettingableClass() =
    let mutable propA = "defalut"
    let mutable propB = 0
    member this.PropA with get() = propA and set(v) = propA <- v
    member this.PropB with get() = propB and set(v) = propB <- v
    member this.disp =
        printfn "propA = %s propB = %d" this.PropA this.PropB
        
(実行例)
 
> let td = new myPropertySettingableClass();;
val td : myPropertySettingableClass
 
> td.disp();;
propA = defalut propB = 0
val it : unit = ()
 
> let t0 = new myPropertySettingableClass(PropA = "F#");;
val t0 : myPropertySettingableClass
 
> t0.disp();;
propA = F# propB = 0
val it : unit = ()
 
> let t1 = new myPropertySettingableClass(PropB = 100000);;
val t1 : myPropertySettingableClass
 
> t1.disp();;
propA = defalut propB = 100000
val it : unit = ()
 
> let t2 = new myPropertySettingableClass(PropB = 100,PropA = "C#");;
val t2 : myPropertySettingableClass
 
> t2.disp();;
propA = C# propB = 100
val it : unit = ()
 
F#のコンパイラは、使われない名前付き変数を見つけると、同名のsetプロパティを探してそれがあれば設定が行われます。
スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

非公開コメント

プロフィール

T GYOUTEN

Author:T GYOUTEN
F#と英単語とフリーソフトと読書に興味があります。
ホームページでフリーソフトも公開しています。どぞ御贔屓に。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
フリーエリア
フリーエリア
blogram投票ボタン
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。