gpt4 book ai didi

compiler-errors - 值限制错误详细信息

转载 作者:行者123 更新时间:2023-12-02 10:46:22 25 4
gpt4 key购买 nike

let empties = Array.create 100 []

给出一个值限制错误: error FS0030: Value restriction. The value 'empties' has been inferred to have generic type val empties : '_a list []. Either define 'empties' as a simple data term, make it a function with explicit arguments or, if you do not intend for it to be generic, add a type annotation.
虽然这不是:
let makeArray () = Array.create 100 []

那么区别是什么呢?我知道SO问题包含“您尝试过的内容”的传统,但我什至不知道该怎么做,这是一个概念性的问题...

最佳答案

评论中的链接应该可以解决您的大部分问题。但是,您想用此代码实现什么?您想要100个空列表的数组吗?

实际上makeArray ()empties没有什么不同。如果执行它,您将得到相同的错误消息:

error FS0030: Value restriction. The value 'it' has been inferred to have generic type val it : '_a list [] Either define 'it' as a simple data term, make it a function with explicit arguments or, if you do not intend for it to be generic, add a type annotation.



这将创建一个包含100个列表的数组: let mkArr2<'a> = Array.create<'a list> 100
相似,但默认值为0(但我删除了[] list参数): let mkArr3<'a> = Array.zeroCreate<'a> 100
最后是一个空数组: let mkArr4<'a> = Array.empty<'a>
或者使用传统的数组初始化语法进行如下操作: let mkArr5<'a> = Array.init 100 (fun _ -> []:'a list)
对于您的特定示例,您只需添加通用类型注释。如果需要列表/数组,请使用 'a list'a arraylet empties<'a> = Array.create<'a> 100

关于compiler-errors - 值限制错误详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41523392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com