gpt4 book ai didi

Julia 错误 : TypeError: non-boolean (Int64) used in boolean context

转载 作者:行者123 更新时间:2023-12-01 13:12:24 25 4
gpt4 key购买 nike

我在调用函数时收到标题中的错误,但如果我直接执行函数体则不会。这是我的函数的定义:

function sslogdensity(trial::ABtrial,σ²,ł,ρ²)
(id,Tobs,μg,y₀,y₁,yg,ξ₀ₐᵣ,ξ₀ᵣᵣ,ξ₁ₐᵣ,ξ₁ᵣᵣ,ξ₀ₐₐ,ξ₁ₐₐ,𝑇,g,gᵧ)=params(trial)
if(gᵧ==1)
return sslogdensity(yg,gᵧ,μg,σ²,ł,ρ²)
else
return 0
end
end

当我调用此函数时,我收到错误消息:
julia> typeof(trial)
ABtrial

julia> sslogdensity(trial,1.0,1.0,1.0)
ERROR: TypeError: non-boolean (Int64) used in boolean context
in sslogdensity at /home/grad/msl33/Dropbox/pprocess/statespace.jl:412

但如果我只是直接执行函数内部的代码,它就可以工作
julia> (id,Tobs,μg,y₀,y₁,yg,ξ₀ₐᵣ,ξ₀ᵣᵣ,ξ₁ₐᵣ,ξ₁ᵣᵣ,ξ₀ₐₐ,ξ₁ₐₐ,𝑇,g,gᵧ)=params(trial);

julia> if(gᵧ==1)
return sslogdensity(yg,gᵧ,μg,σ²,ł,ρ²)
else
return 0
end
-322.1504448303596

任何人都可以向我解释这种行为吗?

编辑:
为了完整性
错误消息中的第 412 行对应于该行
if(gᵧ==1)


function params(trial::ABtrial)
return (trial.id,trial.Tobs,trial.μg,trial.y₀,trial.y₁,trial.yg,trial.ξ₀ₐᵣ,trial.ξ₀ᵣᵣ,trial.ξ₁ₐᵣ,trial.ξ₁ᵣᵣ,trial.ξ₀ₐₐ,trial.ξ₁ₐₐ,trial.𝑇,trial.g,trial.gᵧ)
end

最佳答案

没有更多信息很难说( params 的定义;可能已添加到 == 的任何方法),但由于代码中唯一的 bool 上下文是 if有条件的,让我们关注一下。自 ==只是一个函数,它可以根据它的参数被覆盖。为了调试这个,我会插入 @show gᵧ, gᵧ==1在那条线的正上方,看看打印了什么。可能是 gᵧ是某种值,使得 ==有一个奇怪的定义返回 Int而不是 Bool (就像它应该的那样)。

关于 Julia 错误 : TypeError: non-boolean (Int64) used in boolean context,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35529823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com