当我调用函数时,我在标题中收到错误,但如果我直接执行函数主体,则不会收到错误。这是我的函数的定义:
\n\nfunction sslogdensity(trial::ABtrial,\xcf\x83\xc2\xb2,\xc5\x82,\xcf\x81\xc2\xb2)\n (id,Tobs,\xce\xbcg,y\xe2\x82\x80,y\xe2\x82\x81,yg,\xce\xbe\xe2\x82\x80\xe2\x82\x90\xe1\xb5\xa3,\xce\xbe\xe2\x82\x80\xe1\xb5\xa3\xe1\xb5\xa3,\xce\xbe\xe2\x82\x81\xe2\x82\x90\xe1\xb5\xa3,\xce\xbe\xe2\x82\x81\xe1\xb5\xa3\xe1\xb5\xa3,\xce\xbe\xe2\x82\x80\xe2\x82\x90\xe2\x82\x90,\xce\xbe\xe2\x82\x81\xe2\x82\x90\xe2\x82\x90,,g,g\xe1\xb5\xa7)=params(trial)\n if(g\xe1\xb5\xa7==1)\n return sslogdensity(yg,g\xe1\xb5\xa7,\xce\xbcg,\xcf\x83\xc2\xb2,\xc5\x82,\xcf\x81\xc2\xb2)\n else\n return 0\n end\nend\nRun Code Online (Sandbox Code Playgroud)\n\n当我调用这个函数时,我收到错误消息:
\n\njulia> typeof(trial)\nABtrial\n\njulia> sslogdensity(trial,1.0,1.0,1.0)\nERROR: TypeError: non-boolean (Int64) used in boolean context\n in sslogdensity at /home/grad/msl33/Dropbox/pprocess/statespace.jl:412\nRun Code Online (Sandbox Code Playgroud)\n\n但如果我直接执行函数内的代码,它就可以工作
\n\njulia> (id,Tobs,\xce\xbcg,y\xe2\x82\x80,y\xe2\x82\x81,yg,\xce\xbe\xe2\x82\x80\xe2\x82\x90\xe1\xb5\xa3,\xce\xbe\xe2\x82\x80\xe1\xb5\xa3\xe1\xb5\xa3,\xce\xbe\xe2\x82\x81\xe2\x82\x90\xe1\xb5\xa3,\xce\xbe\xe2\x82\x81\xe1\xb5\xa3\xe1\xb5\xa3,\xce\xbe\xe2\x82\x80\xe2\x82\x90\xe2\x82\x90,\xce\xbe\xe2\x82\x81\xe2\x82\x90\xe2\x82\x90,,g,g\xe1\xb5\xa7)=params(trial);\n\njulia> if(g\xe1\xb5\xa7==1)\n return sslogdensity(yg,g\xe1\xb5\xa7,\xce\xbcg,\xcf\x83\xc2\xb2,\xc5\x82,\xcf\x81\xc2\xb2)\n else\n return 0\n end\n-322.1504448303596\nRun Code Online (Sandbox Code Playgroud)\n\n谁能为我提供这种行为的任何解释?
\n\n编辑:\n为了完整性\n错误消息中的第 412 行对应于该行
\n\nif(g\xe1\xb5\xa7==1)\nRun Code Online (Sandbox Code Playgroud)\n\n和
\n\nfunction params(trial::ABtrial)\n return (trial.id,trial.Tobs,trial.\xce\xbcg,trial.y\xe2\x82\x80,trial.y\xe2\x82\x81,trial.yg,trial.\xce\xbe\xe2\x82\x80\xe2\x82\x90\xe1\xb5\xa3,trial.\xce\xbe\xe2\x82\x80\xe1\xb5\xa3\xe1\xb5\xa3,trial.\xce\xbe\xe2\x82\x81\xe2\x82\x90\xe1\xb5\xa3,trial.\xce\xbe\xe2\x82\x81\xe1\xb5\xa3\xe1\xb5\xa3,trial.\xce\xbe\xe2\x82\x80\xe2\x82\x90\xe2\x82\x90,trial.\xce\xbe\xe2\x82\x81\xe2\x82\x90\xe2\x82\x90,trial.,trial.g,trial.g\xe1\xb5\xa7)\nend\nRun Code Online (Sandbox Code Playgroud)\n