你怎麼能寫在一行下面的F#代碼(或類似):讓與財產分配在同一行
let contextMenu = new ContextMenuStrip()
mainForm.ContextMenuStrip <- contextMenu
我必須聲明文本菜單因爲以後需要。
你怎麼能寫在一行下面的F#代碼(或類似):讓與財產分配在同一行
let contextMenu = new ContextMenuStrip()
mainForm.ContextMenuStrip <- contextMenu
我必須聲明文本菜單因爲以後需要。
我不建議你把它寫在一行上,因爲這意味着它將是#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模式無關。它們只是一種通用語言結構。
希望它有幫助。
您可以將公共可寫屬性設置爲構造函數中的僞參數。
let contextMenu = new ContextMenuStrip()
let form = new Form(ContextMenuStrip = contextMenu)
你也可以輸入
let contextMenu = new ContextMenuStrip() in mainForm.ContextMenuStrip <- contextMenu
這是OCaml的語法,IIRC。
編輯:更清楚:這也是有效的(#light)F#語法,因爲F#基於OCaml。
我也不建議這樣做,儘管我喜歡短節目。
這是爲什麼被拒絕? – rysama 2009-11-16 18:01:55
+1,我的猜測是,在財產製定者可能會有一個副作用,它嚇到了一個人。我喜歡這種語法。它鼓勵人們編寫小構造函數並使用屬性。 – gradbot 2009-11-16 19:34:26
哦,我明白了,他設置的值不是ContextMenuStrip。所以它不回答這個問題,儘管我仍然找到了這個使用答案。 let contextMenu = new ContextMenuStrip() let mainForm = new Form(ContextMenuStrip = contextMenu) – gradbot 2009-11-16 19:39:28