为什么集合上的这些常见操作在Julia中重命名?
Julia中集合上的许多常见操作(如从集合中删除项)最近被重命名,旧函数已被弃用 比如说,为什么集合上的这些常见操作在Julia中重命名?,julia,Julia,Julia中集合上的许多常见操作(如从集合中删除项)最近被重命名,旧函数已被弃用 比如说, del(IntSet(1,2,3), 1) 现在弹出一个警告 WARNING: del is deprecated, use delete! instead. 一些重命名的函数: @deprecate push push! @deprecate pop pop! @deprecate grow grow! @deprecate enqueue
del(IntSet(1,2,3), 1)
现在弹出一个警告
WARNING: del is deprecated, use delete! instead.
一些重命名的函数:
@deprecate push push!
@deprecate pop pop!
@deprecate grow grow!
@deprecate enqueue unshift!
@deprecate unshift unshift!
@deprecate shift shift!
@deprecate insert insert!
@deprecate del delete!
@deprecate del_all empty!
为什么要重新命名?正在添加一个!要使更改集合状态的函数现在成为约定?您可以阅读
julia dev
线程。基本上,这只是为了遵守文档中描述的规则:
最后一个函数fill!,不同之处在于它修改现有的
数组,而不是构造新的数组。作为惯例,功能
使用此属性时,名称以感叹号结尾。这些
函数有时称为“变异”函数或“就地”
功能
FWIW我认为这是一个好主意,至少对于
Base
使用
一直是一种明确的表示变异的约定,只是直到最近才得到正确的实施。对于推送
,人们可以很容易地认为它不是必需的。但是使用push
而不是push
表明,在这种情况下,突变的发生方式与使用排序时发生突变的方式完全相同
,这与排序非常不同
这种感叹号约定存在于Scheme和Ruby以及其他几种语言中。它不存在于像R这样的语言中,它不允许一个人在不借助语言的内在本质的情况下执行变异。我没有Julia的经验(以前没有听说过),但我看到了
代码>其他语言中的后缀。从函数式编程的角度来看,代码>表示主要目的是产生变异副作用的函数。乍一看,Julia似乎在设计并行处理,并且易变性增加了并发的复杂性:所以
将强调该特定调用在这方面需要额外的注意(而另一个函数可能是更好的选择)。