arrays - F# 中的 Array.replicate 和 Array.create 之间有什么功能区别吗?
问题描述
我正在重构一些代码,并注意到在使用重复相同的值初始化数组时使用了一些编码器Array.replicate
和其他编码器。Array.create
两个函数的签名是相同的:
> Array.create;;
val it : (int -> 'a -> 'a [])
> Array.replicate;;
val it : (int -> 'a -> 'a [])
我还注意到,两者都提高ArgumentException
了负值count
,并且都允许计数为零。我的直觉告诉我它们是同义词,但后来我在F# For Fun And Profit上找到了这句话:
Array.create 基本上与replicate 相同(尽管实现方式略有不同!)但replication 仅在F# v4 中为Array 实现。
是否有人知道存在哪些差异,或者出于所有意图和目的,它们是否是彼此的别名(也许replicate
只是为了与 平价而添加seq
)?
解决方案
代码是等效的,不应有任何不同的执行方式。
似乎它是在 List 之后添加到 Seq 和 Array 的,所以可能是为了 API 奇偶校验。这是一个旧的提交(2014 年),快速搜索问题并没有发现任何可以肯定解释更改原因的问题。https://github.com/dotnet/fsharp/commit/173d833660767fd24d523d09f317179cc3c3f4b9
推荐阅读
- c# - 尝试在移动设备上加载某些场景时崩溃,Unity C#(AR 游戏)
- r - 如何解决 GGally::ggpairs() 中的过度绘图?
- visual-studio - 注释未出现在 Visual Studio 中
- python - Django中的无效连接字符串属性
- c++ - C ++,将目录中的所有csv文件复制到新文件
- microsoft-graph-api - 图表获取订阅 NextLink URL 无效
- spring-security - Spring 不存储来自 Auth 重定向响应的 Okta JSESSIONID
- android - 降低 ImageView Android 上的图像质量
- ruby-on-rails - Rails 6 Bulma集成CSS中的未定义变量
- wordpress - Spider Teams 的 Apply Online 插件与 WPML 的集成