【问题标题】: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

! 在这里是什么意思?

【问题讨论】:

    标签: julia


    【解决方案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] 等表达式中是什么意思?
    猜你喜欢
    • 1970-01-01
    • 2011-01-11
    • 2020-11-24
    • 2012-04-20
    • 2011-09-09
    • 2023-04-07
    • 1970-01-01
    • 2014-01-31
    • 2021-09-18
    相关资源
    最近更新 更多