Julia 风格指南 says “修改参数”的函数的名称应该以 !
结尾。
但是,关于:
函数确实修改了它们的参数,但在返回之前将它们返回到原始状态?
返回
Task
的函数在执行时会修改参数?返回这样一个
任务
的函数,但是当它完成时,参数将恢复到它们的原始状态?
他们的名字应该以 !
结尾吗?
例如,考虑 this module寻找 exact covers使用 Knuth 的 Dancing Links Algorithm .它实现了一个 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_exact_cover
函数在搜索解决方案时临时修改了 set
中的数据,但是当 find_exact_cover
返回时,set
将处于其原始状态。它应该命名为 find_exact_cover!
吗?
类似地,exact_cover_producer
返回一个生成所有精确封面的 Task
,但是当 Task
完成时,set
将被恢复:
for cover in exact_cover_producer(set)
println(cover) # prints [1,3] and [2,4]
end
# By now, set is restored.
应该是 exact_cover_producer!
吗?
我知道这可能被认为是主观的,所以让我澄清一下我的要求:我想知道 Julia 社区是否有这方面的约定,理想情况下还有标准库中的示例或任何使用任一样式的包。
最佳答案
参见例如discussion at Julia commit e7ce4cba44fa3b508fd50e0c3d03f6bc5a7a5032 : 目前的约定是函数是变异,因此如果它改变了它的参数之一,则附加一个 !
将是 ==
到.
(但也有一些稍微宽泛的定义的理由;请参阅上述讨论。)
关于coding-style - Julia 函数命名 : When should I append a bang?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27080586/