如何在一行中编写以下F#代码(或类似代码):
let contextMenu = new ContextMenuStrip()
mainForm.ContextMenuStrip <- contextMenu
我必须声明 contextMenu ,因为稍后会需要它。
答案 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。
我也不建议这样做,即使我喜欢短节目。