Scilab嵌套定义返回幂函数时结果错误及变量未定义问题求助
错误原因
- Scilab的嵌套函数默认不支持闭包的变量捕获逻辑,内层函数
g中使用的n不会绑定外层monomial函数的入参n,会优先从全局工作区查找对应变量 - 首次运行得到32是因为当时全局工作区存在值为5的
n,实际执行的是2^5=32,和你传入monomial的3没有关联 - 清空全局变量后不存在全局
n,就会触发n未定义的报错
解决方法
你可以通过deff动态构造内层函数,把n的实际值直接固化到函数定义逻辑中,避开变量捕获的问题,修改后的代码如下:
function [f]=monomial(n) // 将n的取值直接拼接到内层函数的计算逻辑里 deff("z = g(x)", "z = x^" + string(n)) f = g; endfunction
测试调用monomial(3)(2)即可得到预期结果8。
内容的提问来源于stack exchange,提问作者Axel
相关产品推荐
相关产品推荐

