全球FlexSim系统仿真中文论坛

搜索
查看: 2969|回复: 4
打印 上一主题 下一主题

声明正确类型变量的重要性

[复制链接]
跳转到指定楼层
1#
zorsite 发表于 2018-7-3 16:12:04 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
如果想要使用某class的属性和方法,必须先将对象声明为该class类型的变量。  o  |' H" \4 F9 a
比如,某实体有一个表格标签,先将其声明为Table类型的变量,才可以使用表格的[]操作符引用单元格并赋值:; x; q5 e. z/ |6 C8 \
Table LabelTable=current.labels["LabelTable"];% o8 s3 j. k4 W. j2 `
LabelTable[1][1]=5;
8 @6 R6 z& P5 V% l
; r! o+ p, w. u  c如果直接对表格标签赋值会报错,比如以下语句:  b6 [0 C, Q, b& Y
current.labels["LabelTable"][2][1]=3;$ m3 T' V' o1 k

' V( R- d! L- t- J再比如,将吸收器声明为Object类型的变量,则可以使用location属性:
  \3 U2 {. k& A: V4 P7 m& dObject Sink=model().last;
$ t) P  p: o8 _' W* j& SSink.location.x=0;4 q9 r4 E/ }3 L' O) D6 n
如果不声明直接引用则报错:1 ~2 Q8 D" {, ^; U) d
model().last.location.y=0;8 x8 X1 L  M: f1 {. J/ K  B% P1 R

" I. c3 m2 u& H! w( Y7 t* e6 n* g: ~1 m: n/ ]7 Z; n
如果将吸收器声明为treenode类型的变量,也无法使用location属性,因为treenode类并没有location属性,只有Object类才有location属性。
+ @, S8 Y3 t, g比如:- n2 g; U* M2 f1 D) x
treenode sink=model().last;' e# X  v3 C9 {/ Q  ?
sink.location.x=0;
1 c" o: P( ]5 k
* f8 `/ ]/ f' L0 D; E这样的代码在语法检测时并不会报错,但是运行是就会抛出异常:9 k( Q& G" I5 S2 y

* x: [+ O8 e7 }+ I7 t
3 `+ G. u  I* z明明是使用了错误的属性,为什么会报Label错误呢?" d6 ~9 o+ N8 B. q
Flexsim并不认为location为属性,因为在treeenode类下没有该属性,只是建模者自己一厢情愿的认为其是属性。
# d" U$ [( o# l" _! R# M8 R; Y对Flexsim来说,节点后面跟上点符号(.),引出的是属性、方法、标签。既然Flexsim没有检索到名为location的属性和方法,就会判定其是标签。但是我们并未在吸收器上设置名为location的标签,因此系统报错:标签不存在。
3 V4 @0 b1 X( s$ w
! J/ J9 i6 E1 [3 t) N0 X; |% O, K/ h) Q+ e( G9 g1 _' H8 |

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

评分

参与人数 3威望 +54 收起 理由
shadowwind + 24 赞一个!
慧娴亚伦 + 15 很给力!
SunshineFu + 15 很给力!

查看全部评分

2#
 楼主| zorsite 发表于 2018-7-3 16:17:01 | 显示全部楼层
Classes like the treenode, Object and Variant (to name a few) allow you to call methods,        as well as access properties, variables, attributes and labels (if applicable) using dot syntax.
% F# {) x4 `1 i' j+ U' ^* q) E. H6 _" y
treenode、Object、Variant(等)类型的变量,可以使用点语法(dot sytax)调用方法,获取属性、变量、属性(特征)、标签(如果存在)。
7 d. R6 I& x4 q7 y1 S
3#
 楼主| zorsite 发表于 2018-7-3 16:26:43 | 显示全部楼层
treenode和Object看上去很相似,在早期版本中没有Object对象,都是用treenode。
# [" h/ M0 `4 LObject继承自treenode,但是比treenode拥有更多的属性和方法。+ j1 n$ J( q" L5 b0 p4 W
未在Object中列出、但treenode有的属性和方法,Object可以直接使用,但反过来不行。
0 ^1 g. ?6 S. ~! ]7 R# ~
4#
 楼主| zorsite 发表于 2018-7-3 16:38:17 | 显示全部楼层
本帖最后由 zorsite 于 2018-7-3 16:40 编辑 4 |  o" u8 W5 t0 D

7 _$ ]! o4 h# e# r( w
0 N" Z* w; a" G5 E- z/ m, O
. Q+ o6 P6 k: Y4 k/ n) b) E

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|全球FlexSim系统仿真中文论坛 ( 京ICP备14043114号-2 )

GMT+8, 2024-5-17 03:07 , Processed in 0.079256 second(s), 15 queries .

Powered by Discuz! X3.3© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表