如何理解“类函数对象”中一段代码的意思

在看 Julia 文档时,类函数对象中的这段代码该怎么理解呢

julia> struct Polynomial{R}
           coeffs::Vector{R}
       end

julia> function (p::Polynomial)(x)
           v = p.coeffs[end]
           for i = (length(p.coeffs)-1):-1:1
               v = v*x + p.coeffs[i]
           end
           return v
       end

julia> (p::Polynomial)() = p(5)

主要是

function (p::Polynomial)(x)
   ###
end

(p::Polynomial)() = p(5)

怎么理解?

Function-like object 翻译通俗一点是 “像函数一样的对象”,就是对象的实例可以像函数一样来调用,就像 C++ 里重载 () 算符,python 里的 __call__ 一样,Julia 里是添加这么一个方法:

function (p::Polynomial)(x)
   ###
end

然后就可以实例化,调用了:

x = Polynomial(rand(10))
x(5)

OK,明白了,感谢