全球FlexSim系统仿真中文论坛
标题:
IF语句声明的变量仅在IF代码块内有效
[打印本页]
作者:
zorsite
时间:
2018-5-17 10:07
标题:
IF语句声明的变量仅在IF代码块内有效
本帖最后由 zorsite 于 2018-5-18 13:17 编辑
, A V! O% w9 U
0 O" q' j3 I# W8 P+ X8 {" _+ {$ _8 l
[attach]4398[/attach]
; |1 B( c# T8 z( Y3 H; Q
如图所示:
7 `. [. |; ?9 p. @
使用Text实体显示处理器加工时间时,想要同时
获取临时实体的类型值
。以下是Text Display代码:
0 B$ l" q* o n! f$ J0 X' H. t
/**显示处理器加工时间*/
c/ K- F# W$ u' J1 H1 G
treenode current = ownerobject(c);
q8 k* Z0 h9 |$ Z. O
treenode textnode = param(1);
4 z& X" `# t- t4 u; \. `, k
! b6 k. @- L0 ?' I3 M% E
string starttext = "Object Stat: ";
u) S, @ R2 P0 M3 s
treenode involved = node("Processor",model());
- \' U5 k- H8 R; n b
string statstr = "";
7 U/ s+ }5 u, x# J3 B9 k, J
- f" x+ ]$ w3 A- D/ } u1 [$ D
if (content(involved)>0) //如果处理器上有临时实体
. [' R$ Q, K$ J* p: ]6 i( t. r5 A
{
, a. ?" b! \! `+ {" e
treenode item = first(involved);
# h! g, @/ g: ~$ L( F
if (getstatenum(involved) == STATE_PROCESSING || getitemstate(item) != FRSTATE_INQUEUE)
; C# ~- P @4 v6 i0 Z
{//如果处理器处于加工状态
* ^, T' Y) O9 n3 e
statstr = numtostring(getitemvar(item, ITEMVAR_PROCESSTIME), 0, 2);
+ L) }1 a" k8 ^6 g
pt("01-");pd(getitemtype(item));pr;//获取当前正在被加工的临时实体的类型,并输出到Output Console
5 V# p, q7 X1 q+ k
}
; _& D8 K3 t2 K# g
}
3 V g" U# w. n
pt("02-");pd(getitemtype(item));pr;//获取当前正在被加工的临时实体的类型,并输出到Output Console
3 ]3 F( b. v7 n+ \+ I
setnodestr(textnode, concat(starttext, statstr));
复制代码
& y7 K: x9 |/ f8 P' M2 U
7 u$ D- G$ y6 U* D6 k. S
理论上来讲,如果处理器上有item正在被加工,则不管是在if模块内部,还是外部
获取item type
,都应该是一样的结果。
) c6 y `9 A$ J0 Y. C R
但Output Console观察到的结果却显示:只有在if模块内部才能正确获取到item type,写在if代码块外部的语句无效。
% Y i$ v9 E5 ` v
[attach]4399[/attach]
% p; c9 y- _/ n' J/ k$ Q. j
n7 F+ f& p4 E: ^
, h0 A; L$ P4 \% o
作者:
zorsite
时间:
2018-5-17 10:16
本帖最后由 zorsite 于 2018-5-18 13:29 编辑
# ]9 w7 y1 e5 X5 j
7 E6 U% E; w1 z* m s: d
忽然有些觉悟。
# {. G# A; l1 l9 P+ C1 t
将item的声明移出if模块,放在if语句前面,则两行获取item type的代码都有效。
1 Y5 G- D% q( V0 j+ h8 G3 @& ^
在if模块内部声明的变量仅在模块内生效,也不能传递至else代码块。
作者:
慧娴亚伦
时间:
2018-5-20 09:27
声明变量作用域的问题
* I, Y+ }) N' z
在代码执行过程中,某些变量值很可能发生变化,但是提前获取过的声明则不会发生改变。
欢迎光临 全球FlexSim系统仿真中文论坛 (http://www.flexsimasia.com/)
Powered by Discuz! X3.3