当前位置: 首页 > 知识库问答 >
问题:

为什么线性阵列的类型特征与普通阵列相比会发生变化?

狄溪叠
2023-03-14

我正在尝试线性逻辑中的一个例子。

它首先介绍了定义了常规操作的标准阵列(第24页):

然后建议线性等价物(使用类型签名的线性逻辑来限制数组复制)将具有稍微不同的类型签名:

这是基于这样的理念设计的,即数组包含的值复制起来很便宜,但数组本身复制起来很昂贵,因此应该作为句柄从使用传递到使用。

问题:查找和更新的签名与标准签名很好地对应,但是我如何解释新签名?

特别地:

  • 函数new似乎没有返回数组。如果没有提供数组,我如何获得数组来使用?
  • 我想我确实理解Arr-o Arr x X不能使用线性逻辑派生,因此需要一个函数来提取单个值而不消耗数组,但我不明白为什么new不直接提供该函数

共有1个答案

甘明朗
2023-03-14

实际上,这是关于垃圾回收机制。

线性逻辑避免了复制以及留下未使用的值。因此,当您使用new创建一个数组时,还需要确保它最终被再次清理。

你如何确保它被清理干净?在本例中,它们不返回数组作为结果,而是将其“借给”调用者。函数Arr⊸ 啊⊗ 除了你真正感兴趣的结果之外,X最后还必须返回一个数组。我们假设这将是您最初使用的数组的一种修改形式。只有X被传回给调用者,Arr被解除分配。

 类似资料:
  • 问题内容: 在知道数组索引的情况下,使用Arrays或HashMaps更好(在性能方面)吗?请记住,示例中的“对象数组/映射”只是一个示例,在我的真实项目中,它是由另一个类生成的,因此我不能使用单个变量。 ArrayExample: HashMapExample: HashMap看起来好得多,但我确实需要在此方面具有性能,因此具有优先权。 编辑: 那么是数组,仍然欢迎建议 编辑: 我忘了提,Arr

  • 在研究将基元数组转换为流的方法时,我发现不支持,而支持其他基元数组类型。有什么特别的理由把他们排除在外吗?

  • 我正在尝试使用 Jolt 从一个 JSON 数组转换为另一个数组。它由一个没有键的嵌套 JSON 数组组成。 这是我的意见: 我想得到以下输出: 我能够使用此规范文件为单个嵌套数组元素添加键: 但我不知道如何将此应用于外部JSON数组。

  • 因此,我有两个大小相等的2D numpy数组,都是在两个不同的曲面上使用方法获得的。 数组中的每个值也是形式的数组(所以我基本上有一个带有1D元素的2D数组)。 基本上,我想根据条件对两者进行比较: 有没有更有效的方法可以做到这一点,而无需简单地迭代任何一个数组,如下所示?

  • 问题内容: 我有一个保证是不同的对象的集合(尤其是由唯一的整数ID索引)。我也确切地知道它们中有多少(并且数目不会改变),并且想知道Array是否比HashSet在存储/检索所述元素方面具有显着的性能优势。 在纸上,Array保证了恒定的时间插入(因为我提前知道了大小)和检索,但是HashSet的代码看起来更简洁并且增加了灵活性,所以我想知道是否会因为使用它而失去任何性能方面的信息,至少在理论上是

  • 所以,我正在尝试匹配 2 个不同的数组。如果相同的单元格匹配,我想使用 .slice 方法从一个数组中删除该单元格。 编辑:我想做的是从数组1中移除一个数字,如果数组2包含一个匹配的数字。代码现在的工作方式是只删除1个条目。我要删除第一个数组中的所有条目。 我尝试运行这个,在控制台日志下,array1没有变化。似乎拼接方法没有删除任何单元格。我搜索了SE,但没有找到任何可以帮助我的东西。