julia - 有条件地在 Julia 的另一个函数中定义一个函数
问题描述
学习较新的 julia 语法和作用域很慢。
在 Julia v1.1.1 中
为什么下面的 MWE 抛出错误“ff 未定义”的解释是什么?
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
推荐阅读
- android - 如何在视图绑定中的活动中获取回收者视图当前项目文本值
- typescript - I'm getting a confusing legend in Highcharts (angular-highcharts)
- html - HTML 导航栏没有到顶部
- tableau-api - 如何根据表格中的客户类型为表格着色
- python - 是否可以使用脚本阻止 Windows APPS?
- express - 如何使用 Puppetter 和 express API 并正确关闭浏览器而不影响其他并发请求
- jquery - jQuery blockUI - 'message' 属性值不会出现在具有相同类的阻塞 div 中
- sql-server - MS SQL 可用性组故障转移行为?
- python - 是否有使用 Python 和请求对网站进行身份验证的通用说明?
- youtube - 就像没有 API 密钥的 Youtube 视频一样?