5

次の F# コード (または類似のコード) を 1 行で記述するにはどうすればよいでしょうか。

let contextMenu = new ContextMenuStrip()
mainForm.ContextMenuStrip <- contextMenu

後で必要になるので、contextMenuを宣言する必要があります。

4

3 に答える 3

6

コンストラクターで、パブリックで書き込み可能なプロパティを疑似パラメーターとして設定できます。

let contextMenu = new ContextMenuStrip()
let form = new Form(ContextMenuStrip = contextMenu)
于 2009-11-16T16:30:15.620 に答える
6

これを 1 行で記述することはお勧めしません。これは、#light (現在のデフォルトのモード) と非 #light 構文が混在することを意味するためです。本当に必要な場合は、;; を使用できます。そのように:

open System
open System.Windows.Forms

let mainForm = new Form()
let contextMenu = new ContextMenuStrip();; mainForm.ContextMenuStrip <- contextMenu;;

式にユニット型がある場合は、次の形式の式である順次実行式を使用できます。

expr1; expr2; expr3

例えば:

mainForm.ContextMenuStrip <- contextMenu; 5 + 6 |> ignore; mainForm.ContextMenuStrip <- null

Sequential Execution Expressions は非 #light モードとは何の関係もないことを付け加えたいと思います。それらは単なる一般的な言語構造です。

それが役に立てば幸い。

于 2009-11-16T15:28:00.443 に答える
5

次のように入力することもできます

let contextMenu = new ContextMenuStrip() in mainForm.ContextMenuStrip <- contextMenu

これはOCaml構文、IIRCです。

編集:より明確にするために:F#はOCamlに基づいているため、これも有効な(#light)F#構文です。

また、短いプログラムが好きですが、これを行うことはお勧めしません。

于 2009-11-16T16:33:17.423 に答える