|
如果想要使用某class的属性和方法,必须先将对象声明为该class类型的变量。
9 S! V: o- }4 f2 v1 ~. y% o比如,某实体有一个表格标签,先将其声明为Table类型的变量,才可以使用表格的[]操作符引用单元格并赋值:8 g& a& e/ j4 U4 T" k, W
Table LabelTable=current.labels["LabelTable"];
+ C1 p) J7 o6 E6 @3 V2 Y) kLabelTable[1][1]=5;. a5 M# a4 z' b, [6 B
* ^7 |# O) u5 R; w% H. g如果直接对表格标签赋值会报错,比如以下语句:5 K2 f1 Y$ {% g9 a O( S. z0 V* Z2 j
current.labels["LabelTable"][2][1]=3;
" X$ m' ?- H+ D4 K# b, ]
0 R' t* e: x/ |再比如,将吸收器声明为Object类型的变量,则可以使用location属性:: Y" b' O5 _$ a$ @
Object Sink=model().last;
/ Z* f1 A: A F: X% ]& cSink.location.x=0;9 B% f2 k, g3 W) L
如果不声明直接引用则报错:
/ a& Y" r( N. Tmodel().last.location.y=0;
4 z, z$ {5 d* z# e! @. ~% }7 U0 _% l
6 N6 z7 N3 ?; R J7 D# `如果将吸收器声明为treenode类型的变量,也无法使用location属性,因为treenode类并没有location属性,只有Object类才有location属性。
3 j& S% x; U t比如:4 y. `6 o4 m% n: a! Q q+ J& w
treenode sink=model().last;, F. X5 q5 |# S, P5 m4 P8 i2 u
sink.location.x=0;
) T; n- k* s! H2 z, T/ Y) O
7 p$ X8 D. |1 ]3 o' E8 `这样的代码在语法检测时并不会报错,但是运行是就会抛出异常:8 Q7 [1 ~. @8 n$ O1 m& h2 _
" g7 \! ~ P2 @5 a: S4 ~9 `
a8 `. A, v6 F" k# H4 E' H) d明明是使用了错误的属性,为什么会报Label错误呢?% f2 Z" } O# J
Flexsim并不认为location为属性,因为在treeenode类下没有该属性,只是建模者自己一厢情愿的认为其是属性。, N) F; b1 b% F: E+ E
对Flexsim来说,节点后面跟上点符号(.),引出的是属性、方法、标签。既然Flexsim没有检索到名为location的属性和方法,就会判定其是标签。但是我们并未在吸收器上设置名为location的标签,因此系统报错:标签不存在。
. T' G# H& s$ Z& {% e j. t1 D
+ ]# H3 p4 g/ {; }; E
b: J& N9 N* [) Z+ i5 p* T4 U |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
评分
-
查看全部评分
|