当我尝试运行下面的代码时,属性为空。这是为什么?我为属性分配了一个空列表,但第一次通过循环时,它为空。
这会导致它删除我附加到它的第一个值。我也不明白这一点。似乎与 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)
我假设这个[<Given>]
属性来自一个测试框架,这让我怀疑该程序集是通过它以非常规方式加载的。初始值[0]
由模块的静态构造函数设置,因此如果该构造函数不是由测试框架运行,那么这就解释了为什么它保持等于null
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)