2016-06-17 34 views
1

我有這個代碼不工作我如何根據f#中的類型定義的對象生成新的不可變對象?

type Option(xsdLocation:string, xmlDirectory:string) = 
    member this.XsdLocation = xsdLocation 
    member this.XmlDirectory = xmlDirectory 

let a1 = new Option("xsd","xml") 
let a2 = {a1 with XsdLocation = "xsd2"} 

我得到的錯誤 error FS1129: The type 'Option' does not contain a field 'XsdLocation'

+0

我認爲這是做到這一點的方法,網上很多例子都顯示了其他記錄類型。另外,我對f#很新,所以我不確定這些關鍵字是什麼。 – XenoPuTtSs

回答

4

所定義的對象是一個標準的.NET class,不是record。如果你想使用with語法,你應該把它定義爲這樣的:

type Option = {XsdLocation : string; XmlDirectory : string} 

let a1 = {XsdLocation = "xsd"; XmlDirectory = "xml"} 
let a2 = {a1 with XsdLocation = "xsd2"} 

PS:我也建議選擇比Option以外的名稱爲您的類型,因爲Option是內置型。

+0

謝謝。根據你的建議,我改變了我使用的名字。 – XenoPuTtSs

相關問題