|
如果想要使用某class的属性和方法,必须先将对象声明为该class类型的变量。
: }% u! @* t0 E1 I比如,某实体有一个表格标签,先将其声明为Table类型的变量,才可以使用表格的[]操作符引用单元格并赋值:
( u) g, V4 `( y; U# yTable LabelTable=current.labels["LabelTable"];
& o( q! P7 C/ |8 V. D7 VLabelTable[1][1]=5;9 f2 U3 E0 t% C3 `( W& Y! p
6 w, y0 \( I1 T/ g n如果直接对表格标签赋值会报错,比如以下语句:
8 @. _" \& z6 W0 Scurrent.labels["LabelTable"][2][1]=3;2 B+ I- Q* ?5 q- m7 I" ?, E, a
1 l5 m2 U: m) u% }& n1 V/ c: ~- M
再比如,将吸收器声明为Object类型的变量,则可以使用location属性:; d) I; P5 G4 X1 z# V
Object Sink=model().last;5 _3 ]5 a5 c) C) m
Sink.location.x=0;
' p. b: A8 T7 G1 t如果不声明直接引用则报错:
8 L. X g5 Z4 d7 A, v& ?model().last.location.y=0;
' [6 x& V3 G3 W: J* ^1 D+ G1 v- {2 E7 v- L7 N3 Y/ C7 G
L" {+ h& m, o- ?, q7 ~0 v
如果将吸收器声明为treenode类型的变量,也无法使用location属性,因为treenode类并没有location属性,只有Object类才有location属性。
3 H& a5 I$ s9 L! s; R比如:4 Z2 I- Y% |1 U( w% ~/ f: @
treenode sink=model().last;
6 ~/ N( m8 |$ c# q+ q: W4 [sink.location.x=0;3 Y4 M3 L3 W: ]( x3 H6 v4 G2 l& G& i
) A; n1 |* V# I4 T; G9 ~: z这样的代码在语法检测时并不会报错,但是运行是就会抛出异常:
, R3 J/ W$ m# r% k8 Q, Q7 C4 \1 O& O; S4 D
8 n# D/ a# R4 I明明是使用了错误的属性,为什么会报Label错误呢?
: o( ^. x3 W$ QFlexsim并不认为location为属性,因为在treeenode类下没有该属性,只是建模者自己一厢情愿的认为其是属性。
' v0 z9 X( t4 B对Flexsim来说,节点后面跟上点符号(.),引出的是属性、方法、标签。既然Flexsim没有检索到名为location的属性和方法,就会判定其是标签。但是我们并未在吸收器上设置名为location的标签,因此系统报错:标签不存在。
0 p4 Z4 b; d. o& h7 M k5 _/ e4 j' G% J& n5 x
9 ]9 Q+ t& z' K, G) v0 b |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
评分
-
查看全部评分
|