|
如果想要使用某class的属性和方法,必须先将对象声明为该class类型的变量。
# g! \8 | K. G: I" s# J比如,某实体有一个表格标签,先将其声明为Table类型的变量,才可以使用表格的[]操作符引用单元格并赋值:
7 l0 F5 q: b- m8 m. j0 Y. k& DTable LabelTable=current.labels["LabelTable"];
/ E: Z! K1 X; Z6 U3 v* j! a4 s( x* d. zLabelTable[1][1]=5;
5 c9 E F8 Z- w0 T; l0 U6 @0 x, S. C$ Q' P! O- S
如果直接对表格标签赋值会报错,比如以下语句:
A1 u" ^. w* ?1 l; X; Q, t/ {2 Jcurrent.labels["LabelTable"][2][1]=3;
5 h( I7 t/ A4 r( i [* d
% k3 E6 s4 S4 P7 ^- \再比如,将吸收器声明为Object类型的变量,则可以使用location属性:) e/ D' m$ R1 a& u; l7 {3 L% r
Object Sink=model().last;6 [2 W$ n) B( y; d6 p* y
Sink.location.x=0;
3 B% E" o5 A6 O# [# u/ Q1 y. j如果不声明直接引用则报错:
0 A4 T1 C$ F( [8 K/ g8 t5 bmodel().last.location.y=0;
' I3 z2 M9 m% e; g! E- }! C* [4 w3 n5 D
: m3 G/ B- ~ t2 Y `* l如果将吸收器声明为treenode类型的变量,也无法使用location属性,因为treenode类并没有location属性,只有Object类才有location属性。) |6 h4 A# G9 g9 l# N
比如:
$ j, g! \, x. ytreenode sink=model().last;
+ {' u" h0 |5 o0 D# Vsink.location.x=0;/ W0 ]4 B& e: H, J! b |# ^1 i
8 Q" G+ q: E* U$ g0 q8 `这样的代码在语法检测时并不会报错,但是运行是就会抛出异常:
8 m w: W4 t3 m2 }5 A& C1 s
$ g! P2 J/ Y7 L3 J& [' b0 e: _' h
6 h O) U& \* t) B8 m明明是使用了错误的属性,为什么会报Label错误呢?7 y2 Q+ ^1 {- A+ g* U/ @
Flexsim并不认为location为属性,因为在treeenode类下没有该属性,只是建模者自己一厢情愿的认为其是属性。6 ]0 i! j2 m+ @+ A9 x5 i/ {
对Flexsim来说,节点后面跟上点符号(.),引出的是属性、方法、标签。既然Flexsim没有检索到名为location的属性和方法,就会判定其是标签。但是我们并未在吸收器上设置名为location的标签,因此系统报错:标签不存在。
% X4 P. d7 ]. r, a6 J# B+ \; Y6 o, T# _8 Z
$ E) G: L2 u; i5 }7 o% F5 U
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
评分
-
查看全部评分
|