跳到内容
新问题

对这个项目有疑问吗?注册一个免费的GitHub帐户以打开一个问题,并联系其维护者和社区。

单击“注册GitHub”,表示您同意我们的服务条款隐私声明。我们偶尔会向您发送与帐户相关的电子邮件。

已经在GitHub上了?登录到您的帐户

DynamicArray.subArray创建长度绑定为+1的数组 #280

已合并
将1个提交合并到
2023年12月20日

对话

达林M223
复制链接
贡献者

描述

在REPL中运行:

val值arr=动态数组(10,0)val值()=动态阵列更新(arr,0,1)val值()=动态阵列更新(arr,1,1)val值()=动态阵列更新(arr,2,1)val值subar=动态数组.toList(DynamicArray.subArray(arr,0,2))

引发下标异常,即使设置了范围[0,2]中的值。
类似地,在REPL中运行此命令:

val值arr=动态数组(10,0)val值()=动态阵列更新(arr,0,1)val值()=动态阵列更新(arr,1,1)val值()=动态阵列更新(arr,2,1)val值()=DynamicArray.truncate(arr,2)

将导致阿珥处于无效状态,因此正在运行DynamicArray.toList数组动态数组到矢量数组将引发下标例外。

这是因为subArray(子数组)创建一个具有新数组绑定长度的数组,即使文件中的注释说该数组应该至少有绑定+1个元素。

我也修改了截断即使数组大小<=3*sz,也要设置绑定引用,截断可以用于一致地降低动态阵列的边界。

相关问题

动机和背景

我想用DynamicArray.truncate动态数组截断降低界限,我想使用DynamicArray.bound+1作为数组中所有集合元素的长度。马上截断通常会导致无效状态,并且它只会在某些情况下降低界限,这意味着[0,bound]中的元素可能包含已清零的值。

这是如何测试的?

我将更新后的smlnj-lib.cm文件加载到REPL中,并运行以下命令:

>val arr=动态数组数组(10,0);val arr=-:int动态数组数组>DynamicArray.update(arr,0,1);valit=():单位>DynamicArray.update(arr,1,1);valit=():单位>DynamicArray.update(arr,2,1);valit=():单位>动态数组.toList(DynamicArray.subArray(arr,0,2));valit=[1,1,1]:int列表>val arr=动态数组数组(10,0);val arr=-:int动态数组数组>DynamicArray.update(arr,0,1);valit=():单位>DynamicArray.update(arr,1,1);valit=():单位>DynamicArray.update(arr,2,1);valit=():单位>动态数组截断(arr,2);valit=():单位>动态数组截断(arr,1);valit=():单位>DynamicArray.truncate(arr,0);valit=():单位-val arr=动态数组数组(3,0);val arr=-:int动态数组数组-DynamicArray.update(arr,0,1);valit=():单位-DynamicArray.update(arr,1,1);valit=():单位-DynamicArray.update(arr,2,1);valit=():单位-动态数组绑定arr;val-it=2:int值-动态数组截断(arr,2);valit=():单位-动态数组绑定arr;valit=1:int

复制链接
贡献者

@JohnReppy公司 JohnReppy公司 留下了评论

选择隐藏此评论的原因

将显示原因,以便向其他人描述此评论。了解更多信息.

这些变化对我来说很好。

@JohnReppy公司 JohnReppy公司合并提交f02b128进入之内 smlnj公司:主要的 2023年12月20日
@JohnReppy公司 JohnReppy公司更改了标题DynamicArray.subArray创建长度绑定为+1的数组 动态数组.subArray创建长度绑定为+1的数组 2023年12月20日
@JohnReppy公司 JohnReppy公司更改了标题动态数组.subArray创建长度绑定为+1的数组 DynamicArray.subArray创建长度绑定为+1的数组 2023年12月20日
JohnReppy公司添加了提交引用的这个拉请求 2023年12月20日
免费注册 在GitHub上加入此对话.已经有帐户了吗?登录以发表评论
标签
还没有
项目
还没有
开发

成功合并此请求可能会解决这些问题。

2名参与者