这是一个非常基本的问题,但是我找不到与此问题相关的问题。假设有一个类型为的数组Array{Int64,1},我想对数组中的所有元素求和。我在网上找到的语法只是sum在数组上使用该函数,如下所示:
sum([i for i in 1:999 if i%3==0 || i%5==0])
Run Code Online (Sandbox Code Playgroud)
但是我收到一条错误消息
MethodError: objects of type Int64 are not callable
Run Code Online (Sandbox Code Playgroud)
当我在stackoverflow帖子中尝试语法求和多维数组时,也会出现该消息。那么这是什么问题呢?
这个对我有用:
julia> sum([i for i in 1:999 if i%3==0 || i%5==0])
233168
Run Code Online (Sandbox Code Playgroud)
尝试重新启动Julia。您sum以前可能曾经将其用作变量,但现在编译器无法将其识别为函数。
另外,最好避免分配。不必创建数组,只需使用生成器即可:
julia> sum(i for i in 1:999 if i%3==0 || i%5==0)
233168
Run Code Online (Sandbox Code Playgroud)
后者对我来说快两倍以上,零分配。