|
如果想要使用某class的属性和方法,必须先将对象声明为该class类型的变量。
3 W: ^7 l; w! F4 |4 @- Z4 r比如,某实体有一个表格标签,先将其声明为Table类型的变量,才可以使用表格的[]操作符引用单元格并赋值:$ ]" Z, X; K% [" @5 B' M
Table LabelTable=current.labels["LabelTable"];
' ]! q9 r. w3 ?LabelTable[1][1]=5;
& k9 @: S9 ^9 r1 X% E) ?1 @# O, _& c
如果直接对表格标签赋值会报错,比如以下语句:
/ j9 p" a9 x1 R, x, _( ycurrent.labels["LabelTable"][2][1]=3;4 s5 g" {+ H- c
c! I, ?3 ]) i6 e% k再比如,将吸收器声明为Object类型的变量,则可以使用location属性:
" {- w$ N. E6 T6 cObject Sink=model().last;
) c4 G X) B3 f* n: \+ ASink.location.x=0;
4 j( ^% N* ]# }. E$ a如果不声明直接引用则报错:
! I' h1 Y* o7 \, ~. B& S/ @1 omodel().last.location.y=0;
- g) U; U2 x* q
. B; b8 e6 T# I0 M. Q% P& F
# b2 z2 e$ p/ o" S" I: H, X9 w8 v Y+ |+ |$ J如果将吸收器声明为treenode类型的变量,也无法使用location属性,因为treenode类并没有location属性,只有Object类才有location属性。( n, m8 V, L- h2 e/ r5 D' g
比如:* \4 B$ N2 B& D
treenode sink=model().last;
$ Z& L" Z" `* Y9 g2 |sink.location.x=0;
& }9 M6 Y8 y" {7 R8 e% E8 h/ s
9 A* t% R3 U- F$ j这样的代码在语法检测时并不会报错,但是运行是就会抛出异常:
}- w; C$ J0 l# `1 }9 C& p
: Q3 n. l* g' v; \3 h9 [9 ~# v6 @' S4 X
明明是使用了错误的属性,为什么会报Label错误呢?7 Y$ \. l, e6 c W# C5 I/ T
Flexsim并不认为location为属性,因为在treeenode类下没有该属性,只是建模者自己一厢情愿的认为其是属性。
% Z4 e; F3 q4 o) r对Flexsim来说,节点后面跟上点符号(.),引出的是属性、方法、标签。既然Flexsim没有检索到名为location的属性和方法,就会判定其是标签。但是我们并未在吸收器上设置名为location的标签,因此系统报错:标签不存在。
0 J0 o4 C# N' s$ X7 ~* R) g% P- m, ?; `) R0 ?+ u% Y
) F2 v7 P8 V. P. {3 T6 F |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
评分
-
查看全部评分
|