gpt4 book ai didi

julia - 在 Julia 中的另一个函数中有条件地定义一个函数

转载 作者:行者123 更新时间:2023-12-03 15:41:17 24 4
gpt4 key购买 nike

学习新的 julia 语法和范围的速度很慢。
在 Julia v1.1.1 中
为什么下面的 MWE 会抛出错误“ff not defined”的解释是什么?

N = 5;
typp = "b";
mu = 2;

function bigfun()

function f(u,mu)
ee = mu*u;
return ee
end

function g(uv,mu)
ee = (mu^2)*uv
return ee;
end

while 1 == 1

u = ones(N);
if typp == "a"
ff(u) = f(u,mu);
elseif typp == "b"
ff(u) = g(u,mu);
end
fu = ff(u);
break;

end

end

bigfun();

最佳答案

这是 Julia 中的一个已知错误:https://github.com/JuliaLang/julia/issues/15602 .您不能有条件地定义内部函数。有几种方法可以解决这个问题:

  • 定义 ff作为匿名函数:
        if typp == "a"
    ff = u -> f(u,mu)
    elseif typp == "b"
    ff = u -> g(u,mu)
    end
    fu = ff(u)
  • 定义 ff一次,并在其中添加条件:
        function ff(u, typp)
    if typp == "a"
    f(u,mu)
    elseif typp == "b"
    g(u,mu)
    end
    end
    fu = ff(u, typp)
  • 不定义函数 ff根本。您不需要,在您提供的示例中,只需分配 fu有条件的
        if typp == "a"
    fu = f(u,mu)
    elseif typp == "b"
    fu = g(u,mu)
    end
  • 关于julia - 在 Julia 中的另一个函数中有条件地定义一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65660234/

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