|
如果想要使用某class的属性和方法,必须先将对象声明为该class类型的变量。3 n9 g% Z6 K7 G% f
比如,某实体有一个表格标签,先将其声明为Table类型的变量,才可以使用表格的[]操作符引用单元格并赋值:
0 M( {" {# O: X( G6 G# uTable LabelTable=current.labels["LabelTable"];* c2 i7 z0 b: j7 a7 @
LabelTable[1][1]=5;
6 ?. p/ D0 F' T5 ?% U1 {2 z/ K! D5 Y4 i! _
如果直接对表格标签赋值会报错,比如以下语句:& M: a z i) F, A
current.labels["LabelTable"][2][1]=3;
7 Q0 K$ q2 `& c( V" G4 u( \) a5 I. G- L+ E) P8 _4 K' Z
再比如,将吸收器声明为Object类型的变量,则可以使用location属性:
' i. _% L- d% X4 f; EObject Sink=model().last;- Y/ I2 \( w# y# \! H% |
Sink.location.x=0;2 J) D _4 q/ n0 f m4 s
如果不声明直接引用则报错:
2 z2 S- F" m6 ?$ ^6 G: S% emodel().last.location.y=0;" L0 s- J) m9 d7 U6 U9 \4 b P
) F8 A; o" F! s9 D
8 d. x0 Y& v3 W. V4 b5 U& y" K如果将吸收器声明为treenode类型的变量,也无法使用location属性,因为treenode类并没有location属性,只有Object类才有location属性。1 r0 m% L* _8 ^# M! F
比如:
6 C* G; m; @5 T/ h! s# W& Ctreenode sink=model().last;: Z5 a. |" P5 ]5 t/ m3 b6 x
sink.location.x=0;
# X; R+ y. `; L4 M1 B8 g/ f
, k6 J/ x/ P, M/ Q' G$ G6 `* R# U: Q这样的代码在语法检测时并不会报错,但是运行是就会抛出异常:
j. T! w8 t" [$ i( E8 V& d) ~2 z/ I3 R& C" Y0 @+ s5 z1 \
7 Z6 \) O3 }% }明明是使用了错误的属性,为什么会报Label错误呢?5 ~$ y) y+ E; A3 m$ j9 K
Flexsim并不认为location为属性,因为在treeenode类下没有该属性,只是建模者自己一厢情愿的认为其是属性。
k8 T& w( S% K7 d7 a' X% Y# Z对Flexsim来说,节点后面跟上点符号(.),引出的是属性、方法、标签。既然Flexsim没有检索到名为location的属性和方法,就会判定其是标签。但是我们并未在吸收器上设置名为location的标签,因此系统报错:标签不存在。
1 s+ I+ D/ ^! L0 O4 j5 F
- f" G, G4 g6 H( _+ W' m$ I5 ?
9 n+ l, _4 N& B8 |- z" i. S |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
评分
-
查看全部评分
|