我定义了一堆常量。我想在本地函数中使用它们。 该函数无法访问这些值,并且出现错误 未定义的函数或变量“ g”。
我尝试过转移功能的位置 还尝试使常量成为全局常量,以便每个局部函数都知道它们
<div class='container'>
<ul *ngFor="let student of students; let i = index">
<h3> Class {{ student.class }}</h3>
<li *ngFor="let section of students; let i = index">
<h5> section {{ student.section}}</h5>
<!-- <a href='#' *ngFor="let name of students">{{student.name}}</a> -->
</li>
</ul>
</div>
答案 0 :(得分:2)
有多种将常量传递给MATLAB函数的方法
将变量定义为global
是一个简单的解决方案。
使用global
使变量对所有函数和脚本“可见”。使用global
的缺点是它不可扩展,并且会阻止代码重用。
从学术软件工程的角度来看,您根本不应该使用全局变量。假设您的代码用于解决特定问题,并且不会被扩展或重复使用,则允许使用global
。
使用global
:
在初始化之前将常量声明为全局常量:
global K g
K=0.5; % minor loss coefficient (square edged)
g=9.8; % gravity in m/s2
在使用变量的任何函数中将其声明为全局变量:
function v1=velocity1(f)
global K g
v1= sqrt((2*g*h)/(1+(f*(L./D))+K));
end
使用嵌套函数:
除了使用global
,还可以使用“嵌套函数”方法-内部函数可以访问外部函数的变量。
将您的主脚本定义为一个函数,并将velocity1
定义为一个内部函数:
function main()
%main is the outer function, and velocity1 is an inner function
K=0.5; % minor loss coefficient (square edged)
g=9.8; % gravity in m/s2
h=1;L=3;D=4;
f1= 2; %(value obtained from external function)
v1=velocity1(f1);
%Inner function:
function v1=velocity1(f)
v1= sqrt((2*g*h)/(1+(f*(L./D))+K));
end
end
将参数的结构传递给函数:
常见的解决方案是MATLAB将具有常数参数的结构传递给使用它们的所有函数:
param.K=0.5; % minor loss coefficient (square edged)
param.g=9.8; % gravity in m/s2
param.h=1;param.L=3;param.D=4;
f1= 2; %(value obtained from external function)
v1=velocity1(f1, param);
function v1=velocity1(f, par)
K = par.K;
g = par.g;
h=par.h;L=par.L;D=par.D;
v1= sqrt((2*g*h)/(1+(f*(L./D))+K));
end
还有其他方法,但是我无法全部列出...