|
如果想要使用某class的属性和方法,必须先将对象声明为该class类型的变量。8 c: S. f1 k( Y! l
比如,某实体有一个表格标签,先将其声明为Table类型的变量,才可以使用表格的[]操作符引用单元格并赋值:
) B, I0 R3 s4 X& }Table LabelTable=current.labels["LabelTable"];* q; J5 J+ L( @' K0 |, L. f
LabelTable[1][1]=5;
2 j" {4 \9 V) p& \ u
/ a. O7 a1 F7 s: ]如果直接对表格标签赋值会报错,比如以下语句:6 L' P: w! @% ^$ t4 g
current.labels["LabelTable"][2][1]=3;: O( }. B2 @* z" ^3 S
3 B$ ]3 x5 G# J: T9 ?
再比如,将吸收器声明为Object类型的变量,则可以使用location属性:
! m9 t8 {" j% F8 rObject Sink=model().last;
, ^1 f! l/ w5 |; R) RSink.location.x=0;4 l. I, e+ e0 D/ i* q2 @: x5 \3 m! M' _
如果不声明直接引用则报错:3 L! S5 Y5 u! l1 e( j6 A
model().last.location.y=0;
) _% j+ L% e9 X" y# S1 P7 T+ k' a/ y, m; z
+ w: T) g. G* h2 L* X# `2 J如果将吸收器声明为treenode类型的变量,也无法使用location属性,因为treenode类并没有location属性,只有Object类才有location属性。
' t2 V9 Z$ ]. U+ E/ f6 s' ~" x比如:
& h; h8 O# \$ Otreenode sink=model().last; {9 h- a) c; q7 w+ E
sink.location.x=0;, k0 D( q' z* y/ V+ l4 ], Y5 `
! L. q p7 f5 N; z* ?/ V7 u
这样的代码在语法检测时并不会报错,但是运行是就会抛出异常:
5 p6 O' C B X/ [# Y. N, A( E. w$ f6 X: N! g, Z
1 t/ U+ k' K% Z- Z/ X$ I7 k$ p
明明是使用了错误的属性,为什么会报Label错误呢?
" t" V( K) `( G: J' e FFlexsim并不认为location为属性,因为在treeenode类下没有该属性,只是建模者自己一厢情愿的认为其是属性。
! p% T0 s, x! {$ Z# m1 e0 W对Flexsim来说,节点后面跟上点符号(.),引出的是属性、方法、标签。既然Flexsim没有检索到名为location的属性和方法,就会判定其是标签。但是我们并未在吸收器上设置名为location的标签,因此系统报错:标签不存在。8 |5 M. n" n" e2 h" {5 w
& q1 g" _& M. A8 s
9 s. x- |! V2 w3 F3 g8 m$ Y |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
评分
-
查看全部评分
|