【问题标题】:FSharp.Data optional type throws exceptionFSharp.Data 可选类型抛出异常
【发布时间】:2015-07-01 07:25:09
【问题描述】:

我有一些 Xml,其中一个节点如下:

<code>23</code>

FSharp.Data 正确地将“代码”的类型推断为选项 int。我的问题是当节点为空时如下:

<code />

我得到以下异常

Value is missing at <StartupCode$FSharp-Data>.$TextRuntime.GetNonOptionalValue@109-4.Invoke(String message) in C:\Git\FSharp.Data\src\CommonRuntime\TextRuntime.fs:line 109

有什么方法可以取回 Option.None 而不是抛出异常?

编辑:对于推断为选项字符串的类型,这按预期工作。

【问题讨论】:

  • 您可能需要包含一个缺少此值的样本。
  • 正确。包括一个 Code 为空的附加示例可防止异常。我的印象是,将类型推断为 Option int 就足够了。
  • @kevin 不是。 和不存在的和“非法的” 之间存在细微差别(好吧,这取决于很多,但仍然如此)。 stackoverflow.com/questions/3760629/… 的更详细信息然后在从 XML 推断内容时再次产生影响......

标签: f# f#-data


【解决方案1】:

您尝试过 SampleIsList 吗?这是一个工作正常的示例。

#r "packages/FSharp.Data/lib/net45/FSharp.Data.dll"

#r "System.Xml.Linq"

open FSharp.Data

type Code = XmlProvider< """<samples><code>123</code><code /></samples>""", SampleIsList=true >

Code.Parse("<code>123</code>") = Some 123 //true
Code.Parse("<code />") = None //true

【讨论】:

    猜你喜欢
    • 2021-06-28
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多