函数名称后面的感叹号代表什么?

47
我看到了这样一个函数。
function operator!(c::Matrix, out::Matrix)
    ......
end

这里的!是什么意思?

1个回答

66

我在阅读这段代码,但程序员在函数定义后没有加上 !,却又添加了该函数的另一个副本是为什么呢?就像 operator(V :: Matrix; policy = false) = operator!(V,similar(V); policy = policy) - Fazeleh
2
@ReD operator! 是如何实现的? - Gnimuc
3
为什么程序员在函数定义后没有加!又添加了一份函数的副本?因为没有带!的函数是不可变的,也就是说它不会改变任何输入。请注意它通过similar(V)创建了一个单独的矩阵,该矩阵会在operator!()中被改变,但它并不返回它。如果你调用operator(),你的任何输入都不会改变。但如果你调用operator!(),至少其中一个输入(即第二个输入)会被改变。 - sbromberger
1
在编程中,例如AAA[!,1]这样的表达式是什么意思? - skan
1
@skan,这是针对数据框架的,意思是你想要一个对存储数据的底层向量的引用,而不是它的副本(参见SO Ansdocs)。 - JSymons7

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接