|
如果想要使用某class的属性和方法,必须先将对象声明为该class类型的变量。 o |' H" \4 F9 a
比如,某实体有一个表格标签,先将其声明为Table类型的变量,才可以使用表格的[]操作符引用单元格并赋值:; x; q5 e. z/ |6 C8 \
Table LabelTable=current.labels["LabelTable"];% o8 s3 j. k4 W. j2 `
LabelTable[1][1]=5;
8 @6 R6 z& P5 V% l
; r! o+ p, w. u c如果直接对表格标签赋值会报错,比如以下语句: b6 [0 C, Q, b& Y
current.labels["LabelTable"][2][1]=3;$ m3 T' V' o1 k
' V( R- d! L- t- J再比如,将吸收器声明为Object类型的变量,则可以使用location属性:
\3 U2 {. k& A: V4 P7 m& dObject Sink=model().last;
$ t) P p: o8 _' W* j& SSink.location.x=0;4 q9 r4 E/ }3 L' O) D6 n
如果不声明直接引用则报错:1 ~2 Q8 D" {, ^; U) d
model().last.location.y=0;8 x8 X1 L M: f1 {. J/ K B% P1 R
" I. c3 m2 u& H! w( Y7 t* e6 n* g: ~1 m: n/ ]7 Z; n
如果将吸收器声明为treenode类型的变量,也无法使用location属性,因为treenode类并没有location属性,只有Object类才有location属性。
+ @, S8 Y3 t, g比如:- n2 g; U* M2 f1 D) x
treenode sink=model().last;' e# X v3 C9 {/ Q ?
sink.location.x=0;
1 c" o: P( ]5 k
* f8 `/ ]/ f' L0 D; E这样的代码在语法检测时并不会报错,但是运行是就会抛出异常:9 k( Q& G" I5 S2 y
* x: [+ O8 e7 }+ I7 t
3 `+ G. u I* z明明是使用了错误的属性,为什么会报Label错误呢?" d6 ~9 o+ N8 B. q
Flexsim并不认为location为属性,因为在treeenode类下没有该属性,只是建模者自己一厢情愿的认为其是属性。
# d" U$ [( o# l" _! R# M8 R; Y对Flexsim来说,节点后面跟上点符号(.),引出的是属性、方法、标签。既然Flexsim没有检索到名为location的属性和方法,就会判定其是标签。但是我们并未在吸收器上设置名为location的标签,因此系统报错:标签不存在。
3 V4 @0 b1 X( s$ w
! J/ J9 i6 E1 [3 t) N0 X; |% O, K/ h) Q+ e( G9 g1 _' H8 |
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
评分
-
查看全部评分
|