函数名后面的感叹号是啥意思?
Posted
技术标签:
【中文标题】函数名后面的感叹号是啥意思?【英文标题】:What does an exclamation mark mean after the name of a function?函数名后面的感叹号是什么意思? 【发布时间】:2018-01-05 21:25:01 【问题描述】:我看到了这样的函数
function operator!(c::Matrix, out::Matrix)
......
end
!
在这里是什么意思?
【问题讨论】:
【参考方案1】:在 Julia 中,append !
to names of functions that modify their arguments 是一个约定。原因是 Julia 函数参数是passed-by-sharing,没有这个“bang”约定,很难知道函数是否会改变输入参数的内容。
【讨论】:
我在看这段代码,那为什么程序员又加了一份函数,函数定义后没有!
呢?喜欢operator(V::Matrix; policy=false) = operator!(V, similar(V); policy=policy)
@ReD operator!
是如何实现的?
> 为什么程序员添加了另一个函数副本,没有!函数定义后?因为没有 !是不可变的——也就是说,它不会改变任何输入。请注意,它创建了一个单独的矩阵(通过相似(V)),它确实在 operator!() 中发生了变异,但它不返回它。如果你调用 operator(),你的输入都不会改变。如果你调用 operator!(),你的输入中至少有一个(即第二个)将被改变。
在 AAA[!,1] 等表达式中是什么意思?以上是关于函数名后面的感叹号是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章