Julia 为什么我会得到MethodError:Float64类型的对象是不可调用的?
我有这个功能:Julia 为什么我会得到MethodError:Float64类型的对象是不可调用的?,julia,Julia,我有这个功能: function prob(q, na, mask) q0 = round(Int, q.>0) m0 = round(Int, mask) return prod((q0 + (1-2q0).*pdet0(na)).^m0) end 其中,pdet0()是另一个函数,当我想调用该函数时,我看到一个MethodError:Float64类型的对象是不可调用的,显然,错误出现在函数的最后
function prob(q, na, mask)
q0 = round(Int, q.>0)
m0 = round(Int, mask)
return prod((q0 + (1-2q0).*pdet0(na)).^m0)
end
其中,
pdet0()
是另一个函数,当我想调用该函数时,我看到一个MethodError:Float64类型的对象是不可调用的
,显然,错误出现在函数的最后一行,它与将变量放在括号表达式之前有关,但我确实看不到它,因为它看起来很好。您需要提供运行函数和重现错误所需的所有信息。什么是q
,na
,mask
?什么是pdet0?您需要提供运行函数和再现错误所需的所有信息。什么是q
,na
,mask
?什么是pdet0
?正如Kristofer所说,鉴于您的示例没有运行,很难说清楚,但罪魁祸首很可能是pdet0(na)
,它被解释为“使用参数na
调用函数pdet0
”
极有可能,pdet0
是代码中的一个Float64
数字,会导致错误。重现错误的最低工作示例是:
julia> function1 = 1.0
1.0
julia> function1(5)
ERROR: MethodError: objects of type Float64 are not callable
Stacktrace:
[1] top-level scope at REPL[2]:1
你需要想一想什么是
pdet0
,以及你为什么试图调用它。你是否有可能来自Matlab并试图索引到vectorpdet0
?这将是pdet0[na]
在Julia中,如果pdet0
是一个向量,而na
是一个整数,那么它就会起作用。正如Kristofer所说,很难说你的例子没有运行,但罪魁祸首很可能是pdet0(na)
,它被解释为“用na
参数调用函数pdet0
极有可能,pdet0
是代码中的Float64
数字,从而导致错误。再现错误的最低工作示例为:
julia> function1 = 1.0
1.0
julia> function1(5)
ERROR: MethodError: objects of type Float64 are not callable
Stacktrace:
[1] top-level scope at REPL[2]:1
您需要思考什么是
pdet0
,以及为什么要调用它。您是否碰巧来自Matlab并试图索引到vectorpdet0
?这将是Julia中的pdet0[na]
,如果pdet0
是一个向量和na
和整数,这将起作用 我之所以没有发布整个代码,是因为它是一个包含多个文件的包,我在这里发布的函数基本上是一个光子探测概率的计算q
是探测到的光子数,na
到达的光子数mask
是探测器数,所以它们都是数字,下面是整个文件在Github
上的链接:我之所以没有发布整个代码,是因为它是一个包含多个文件的包,我在这里发布的函数基本上是一个光子探测概率的计算q
是探测到的光子数,na
到达的光子数mask
是探测器数,所以它们都是数字,下面是整个文件在Github
上的链接:你是对的,但问题是这是一个混淆,因为我有一个函数名为另一个变量的同名函数,我没有注意到,但是pdet0()
函数是另一个文件中另一个函数的内部函数,现在我调用prob()
我有UndefVarError:pdet0未定义
,prob()
在构造函数中。这可能是一个范围问题,不幸的是,如果你不能发布一个关于如何定义pdet0
和prob
以再现错误的最低工作示例,那么远程调试几乎是不可能的…你是对的,但问题是这是一个混乱,因为我有一个名为另一个变量同名的函数,我没有注意,但仍然,pdet0()
函数是其他文件中另一个函数的内部函数,当我现在调用prob()
时,我遇到了UndefVarError:pdet0未定义
,prob()
在构造函数中。这可能是一个范围问题,不幸的是,如果您不能发布一个关于如何定义pdet0
和prob
以再现错误的最低工作示例,那么远程调试几乎是不可能的。。。