让和属性分配在一行

时间:2009-11-16 14:42:12

标签: f# properties variable-assignment

如何在一行中编写以下F#代码(或类似代码):

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

我必须声明 contextMenu ,因为稍后会需要它。

3 个答案:

答案 0 :(得分:6)

我不建议你把它写在一行上,因为这意味着它将是#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

我想补充一点,顺序执行表达式与非#light模式无关。它们只是一种通用的语言结构。

希望它有所帮助。

答案 1 :(得分:6)

您可以在构造函数中将public,writeable属性设置为伪参数。

let contextMenu = new ContextMenuStrip()
let form = new Form(ContextMenuStrip = contextMenu)

答案 2 :(得分:5)

您也可以输入

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

这是OCaml语法,IIRC。

编辑:更清楚:这也是有效的(#light)F#语法,因为F#基于OCaml。

我也不建议这样做,即使我喜欢短节目。