在這兩個功能等效的XML文件上使用XML類型提供程序會給XML類型提供程序提供不同的結果。F#XML類型提供程序和可選類型
XML文件1:
<?xml version="1.0" encoding="utf-8"?>
<params>
<mode >
<reg >0</reg>
</mode>
<mode >
<reg >1.7976931348623157E+308</reg>
</mode>
<mode></mode>
</params>
XML文件2:
<?xml version="1.0" encoding="utf-8"?>
<params>
<mode>
</mode>
<mode >
<reg >0</reg>
</mode>
<mode >
<reg >1.7976931348623157E+308</reg>
</mode>
</params>
注意,唯一的區別是空的「模式」是一個文件的末尾和的開始其他。
測試F#代碼如下所示:
type Test = XmlProvider<""".\test.xml""">
type Test2 = XmlProvider<""".\test2.xml""">
let xml = Test.GetSample()
let list1 = [for mode in xml.Modes -> mode.Reg]
let xml2 = Test2.GetSample()
let list2 = [for mode in xml2.Modes -> mode.Reg]
列表1具有類型 「選項<浮動>列表」 如你所願。但是list2的類型是「float list」,這是不正確的,並導致運行時異常。
爲什麼會發生這種情況,我該如何避免此問題?
使用版本2.0.4。我爲它提交了一個問題。 –