|
如果想要使用某class的属性和方法,必须先将对象声明为该class类型的变量。
2 X/ T% n; Z6 R' n2 |$ U比如,某实体有一个表格标签,先将其声明为Table类型的变量,才可以使用表格的[]操作符引用单元格并赋值:
+ k8 S2 T# w0 e I% A% W/ O+ }Table LabelTable=current.labels["LabelTable"];# H6 Z- ?1 x) T$ j* o. e
LabelTable[1][1]=5;
) L1 E( f: D3 r
1 A% w! C" z0 g1 ~! i: h如果直接对表格标签赋值会报错,比如以下语句: R# ]3 M# j9 z( @( Q6 d
current.labels["LabelTable"][2][1]=3; Q* @2 _5 H: H- Q
3 M$ B4 y6 v. V* z3 i2 p0 G' [- K
再比如,将吸收器声明为Object类型的变量,则可以使用location属性:* m, ]9 b1 T. E" V. C# b
Object Sink=model().last;& }. e2 t, k1 Y6 p- y' `
Sink.location.x=0;
* g( R t0 P& t; @" \如果不声明直接引用则报错:# K3 C: H" l4 {, w+ Y+ ]2 k
model().last.location.y=0;
& V. k2 ~0 @& F3 t) Z. {. T, G3 T+ |, V* V0 j4 L1 e4 _# a: }! F2 S* t
& e$ B, g7 G4 x* c8 Z0 @如果将吸收器声明为treenode类型的变量,也无法使用location属性,因为treenode类并没有location属性,只有Object类才有location属性。; V: z# A* Q1 {* r4 C5 j) k- |- f7 R
比如:
' b/ h% L% k3 E; mtreenode sink=model().last;' J$ ?8 e+ i1 H) z* L7 W/ \
sink.location.x=0;; \; P8 G# B: R
" v5 y, |9 m0 O* w1 J) @; s5 J这样的代码在语法检测时并不会报错,但是运行是就会抛出异常:
( V# y4 q2 S+ G3 o! D$ X
8 ]0 F0 C8 x \, |6 |5 K5 ], G- u4 G- r- a
明明是使用了错误的属性,为什么会报Label错误呢?
) D5 T7 q2 J2 D u4 i2 PFlexsim并不认为location为属性,因为在treeenode类下没有该属性,只是建模者自己一厢情愿的认为其是属性。
& [4 i5 O0 U# o& y对Flexsim来说,节点后面跟上点符号(.),引出的是属性、方法、标签。既然Flexsim没有检索到名为location的属性和方法,就会判定其是标签。但是我们并未在吸收器上设置名为location的标签,因此系统报错:标签不存在。
+ q }% K# F/ q2 s" ^* J3 x
3 J* W- S: P% ~, R5 |5 t+ ~) q6 g# @8 r, C+ j9 h8 p
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
评分
-
查看全部评分
|