私は現在、 "Real World Functional Programming"を使っています。私は、Windowsフォームを使用した "hello world"プログラムの例1.12を手に入れようとしています。これはコードです: -F#でWindowsフォームを使用するオブジェクト指向の "Hello world"
open System.Drawing;;
open System.Windows.Forms;;
type HelloWindow() =
let frm = new Form(Width = 400, Height = 140)
let fnt = new Font("Times New Roman", 28.0f)
let lbl = new Label(Dock = DockStyle.Fill, Font = fnt,
TextAlign = ContentAlignment.MiddleCenter)
do frm.Controls.Add(lbl)
member x.SayHello(name) =
let msg = "Hello" + name + "!"
lbl.Text <- msg
member x.Run() =
Application.Run(frm);;
let hello = new HelloWindow();;
hello.SayHello("you");;
hello.Run();;
残念ながら、これはエラーをスローします - 「シングルスレッドで2番目のメッセージループを開始することは有効な操作ではありません。」だから明らかにウィンドウが開いていて終了していないので、プログラムが混乱しています。私はエラーを修正する方法を見ることができない、誰も私を助けることができますか?
私としても、最終的なコードブロックを入力しようとしている: -
let hello = new HelloWindow()
hello.SayHello("you")
hello.Run();;
しかし、それは助けにはなりません。コードは正常に実行されますが、最終行がコメントアウトされても結果は生成されません。
私は 'hello'は、インデントする必要がありましょうからライン疑う - それはちょうどコピーかもしれないが –
はいを。あなたは正しい、編集されます。 –
これはあなたの問題を解決するものではありませんが、;;を使用する必要はありません。どこでも –