かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

ReactiveProperty + F#で簡単なViewModel書いてみたよ

超簡単なやつ。入力があったら1秒後に別プロパティに全部大文字にして出すやつです。

open Codeplex.Reactive
open System
open System.Reactive.Linq

type MainWindowViewModel() =
    // 入力用
    let input = new ReactiveProperty<string>()
    // 出力用
    let output = 
        // 入力されたものを1秒まつ
        input.Delay(TimeSpan.FromSeconds(1.))
        // 大文字に変換する
        |> Observable.map (fun s -> s.ToUpper())
        // IO<T>をReactivePropertyに変換する
        |> ReactiveProperty.ToReactiveProperty

    // 外部にプロパティとして公開する
    member x.Input = input
    member x.Output = output

悪くないくらいすっきりかけそうな気がしますね。