函数名后面的感叹号是啥意思?

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] 等表达式中是什么意思?

以上是关于函数名后面的感叹号是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

在 ruby​​ on rails 中,感叹号后面是啥意思? [复制]

PHP中函数前的感叹号是啥意思

excel重感叹号(!)是啥意思

EPLAN项目标号上有个感叹号,是啥意思?

A64指令末尾的感叹号是啥意思?

Java的方法参数中的双感叹号和#号是啥意思?