Coding style Julia函数命名:我应该在什么时候附加一个bang?
Julia风格指南指出,“修改其参数”的函数的名称应以Coding style Julia函数命名:我应该在什么时候附加一个bang?,coding-style,julia,Coding Style,Julia,Julia风格指南指出,“修改其参数”的函数的名称应以结尾 但是,关于: 确实修改其参数,但在返回之前将其返回到原始状态的函数 返回执行时修改参数的任务的函数 返回这样一个任务的函数,但当它完成时,参数将恢复到其原始状态 他们的名字应该以结尾吗 作为一个例子,考虑使用Kuuths进行查找。它实现了一个类型CoverSet,可以用子集填充,然后查询第一个确切的CoverSet: set = CoverSet() push!(set, [1, 2]) push!(set, [2, 3]) push
结尾代码>
但是,关于:
确实修改其参数,但在返回之前将其返回到原始状态的函数
返回执行时修改参数的任务的函数
返回这样一个任务的函数
,但当它完成时,参数将恢复到其原始状态
他们的名字应该以结尾吗代码>
作为一个例子,考虑使用Kuuths进行查找。它实现了一个类型
CoverSet
,可以用子集填充,然后查询第一个确切的CoverSet:
set = CoverSet()
push!(set, [1, 2])
push!(set, [2, 3])
push!(set, [3, 4])
push!(set, [4, 1])
find_exact_cover(set) # returns [1, 3]
搜索解决方案时,find\u exact\u cover
函数临时修改set
中的数据,但当find\u exact\u cover
返回时,set
将处于其原始状态。应该命名为查找准确的封面代码>而不是
类似地,execute\u cover\u producer
返回一个生成所有精确封面的任务
,但当该任务
完成时,set
将被还原:
for cover in exact_cover_producer(set)
println(cover) # prints [1,3] and [2,4]
end
# By now, set is restored.
应该是精确的封面制作代码>
我知道这可能被认为是主观的,所以让我澄清我的要求:我想知道Julia社区是否有关于这方面的公约,理想情况下,也可以使用标准库或任何使用这两种样式的软件包中的示例。参见:当前惯例是函数正在变异,因此具有如果它将其参数之一的内容更改为==
,则添加code>
(但也有一些理由支持更宽泛的定义;请参见上述讨论。)当我看到函数没有julia中的bang时,我假设我传入的所有参数在调用完成后都将保持不变。函数内部发生的事情与我无关。谢谢你的回答,但这并不能完全回答我的问题。考虑中的参数甚至可能没有定义有效的=
(如我的示例中所示)。但是,即使我们将定义扩展到相等的外部可见行为(通过一些定义的接口),这也不能回答我的任何观点,因为它没有说明相等应该在什么时候成立。最接近的部分是关于并发性的部分,但这是模糊的,远离常规。无论如何,这个链接很有用,所以+1。