|
|
如果想要使用某class的属性和方法,必须先将对象声明为该class类型的变量。
0 q0 c$ {2 e. g; }( ]9 A& Q. {比如,某实体有一个表格标签,先将其声明为Table类型的变量,才可以使用表格的[]操作符引用单元格并赋值:
$ h" ^- Y- R- A, y9 {) uTable LabelTable=current.labels["LabelTable"];
* a" w A& d6 |. oLabelTable[1][1]=5;
/ |) c' f3 @0 m8 v7 R
( U$ H+ V* o5 i; Q% t" S6 }8 Q" y8 \如果直接对表格标签赋值会报错,比如以下语句:
5 R, b$ m- | Q8 Ncurrent.labels["LabelTable"][2][1]=3;5 f; `. l1 D) x
+ k! b$ @+ m* t, o, F( V0 x6 g ~$ c再比如,将吸收器声明为Object类型的变量,则可以使用location属性:3 y# @- `& p% L
Object Sink=model().last;
, e! U3 w. E& USink.location.x=0;7 Z n0 k, h2 ?, j" R2 l4 y! g
如果不声明直接引用则报错:
6 {- l7 d! J; R8 c' V5 ^, Z& mmodel().last.location.y=0;
: R/ N# {: f. P9 f. B% J, [1 M
( S! v" M+ a# m( H, \9 Z. Q: X4 T$ L, ?5 C5 l
如果将吸收器声明为treenode类型的变量,也无法使用location属性,因为treenode类并没有location属性,只有Object类才有location属性。
8 t: m0 z2 w4 l比如:
4 Y! K; R/ T. X% q: E% H$ Xtreenode sink=model().last;
% X; @1 I/ j/ h [sink.location.x=0;
! g: Y9 w+ ` e/ X- y: C
; R' B- y d* J5 b- O5 V这样的代码在语法检测时并不会报错,但是运行是就会抛出异常:, ~" c' ^0 |' a8 X1 X4 E
9 e; J, Y+ C. ~0 T% ]* Z0 [( Z9 I g1 Q) X
明明是使用了错误的属性,为什么会报Label错误呢?+ w! Q; g' w' U* F3 ?
Flexsim并不认为location为属性,因为在treeenode类下没有该属性,只是建模者自己一厢情愿的认为其是属性。
! t( ^% G% Q$ Z3 k对Flexsim来说,节点后面跟上点符号(.),引出的是属性、方法、标签。既然Flexsim没有检索到名为location的属性和方法,就会判定其是标签。但是我们并未在吸收器上设置名为location的标签,因此系统报错:标签不存在。
; z& B4 t% o) Y m+ a/ h7 G( e4 z/ V/ D: M
0 C5 V& ?' _) J! I- k
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
评分
-
查看全部评分
|