【问题标题】:How to define a record field as an array in f#?如何在 f# 中将记录字段定义为数组?
【发布时间】:2014-10-01 20:40:47
【问题描述】:

我想创建一个包含 8 个元素的字节数组类型的记录字段,但找不到正确的语法。

我做了类似的事情:

let dataRecord = {
    id : int
    data : byte array 
}

let dataValues : byte array = Array.zeroCreate 8

let myArray = { id = 0; data = dataValues }

可以在记录定义中完成吗?怎么样?

我上面的例子似乎有效,但我不知道它是否安全或最好或最正确的方法。

【问题讨论】:

    标签: arrays f# record


    【解决方案1】:

    您当前所做的没有任何问题(除了您的类型定义使用let 而不是type),所以我并不完全清楚您的要求。也许是这样的?

    type dataRecord = {
        id : int
        data : byte array
    }
    
    let myRecord = { id = 0; data = [| for i in 1 .. 8 -> 0uy |] }
    

    如果您愿意,也可以只使用 { id = 0; data = Array.zeroCreate 8 } - 数组字面量通常更易于阅读,但如果您要创建大数组,zeroCreate 可能更有效。

    【讨论】:

    • "let" 是一个错误,我在我的代码中把它改正了,但是在为这个例子简化时,我搞砸了。 :-) 感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2012-09-07
    • 1970-01-01
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多