当我尝试运行下面的代码时,属性为null。为什么会这样?我为属性分配一个空列表,但是第一次通过循环时,它是null。
这会导致它删除我追加到它的第一个值。我也不明白这一点。似乎与null连接的值应该是值的列表。
[<TechTalk.SpecFlow.Binding>]
module FSharpLeftistHeapStepDefinition
open TechTalk.SpecFlow
let mutable properties = [0]
let [<Given>] ``I have a list with the following numbers``(values:Table) =
let rec insertItems i =
if i < 0 then ()
else
let value = int ((values.Rows.Item i).Item 0)
properties <- value::properties
insertItems (i-1)
insertItems (values.RowCount - 1)
这很奇怪。
[编辑] 解决方案基于Tarmil的回答
[<Binding>]
type Example ()=
let mutable properties = []
let [<Given>] ``I have a list with the following numbers``(values:Table) =
let rec insertItems i =
if i < 0 then ()
else
let value = int ((values.Rows.Item i).Item 0)
properties <- value::properties
insertItems (i-1)
insertItems (values.RowCount - 1)
答案 0 :(得分:3)
我认为这个[<Given>]
属性来自一个测试框架,这使我怀疑该程序集是以非传统方式加载的。初始值[0]
由模块的静态构造函数设置,因此如果测试框架没有运行此构造函数,那么这将解释为什么它保持等于null
。