登录发现更多内容
首页
资讯
分类
目录
索引
酷站
发帖
用户名
Email
自动登录
找回密码
密码
登录
立即注册
立即登录
立即注册
其他登录
QQ
微信
门户
Portal
论坛
BBS
问AI
提问
搜索
搜索
热搜:
活动
交友
discuz
本版
文章
帖子
用户
帖子
设置
我的收藏
退出
2
0
0
首页
技术交流2
›
IF语句声明的变量仅在IF代码块内有效
返回列表
IF语句声明的变量仅在IF代码块内有效
[ 复制链接 ]
zorsite
技术交流2
2
2
2018-5-17 10:07:35
[i=s] 本帖最后由 zorsite 于 2018-5-18 13:17 编辑 [/i]
如图所示:
使用Text实体显示处理器加工时间时,想要同时[color=#ff0000]获取临时实体的类型值[/color]。以下是Text Display代码:
[code]/**显示处理器加工时间*/
treenode current = ownerobject(c);
treenode textnode = param(1);
string starttext = "Object Stat: ";
treenode involved = node("Processor",model());
string statstr = "";
if (content(involved)>0) //如果处理器上有临时实体
{
treenode item = first(involved);
if (getstatenum(involved) == STATE_PROCESSING || getitemstate(item) != FRSTATE_INQUEUE)
{//如果处理器处于加工状态
statstr = numtostring(getitemvar(item, ITEMVAR_PROCESSTIME), 0, 2);
pt("01-");pd(getitemtype(item));pr;//获取当前正在被加工的临时实体的类型,并输出到Output Console
}
}
pt("02-");pd(getitemtype(item));pr;//获取当前正在被加工的临时实体的类型,并输出到Output Console
setnodestr(textnode, concat(starttext, statstr));[/code]
理论上来讲,如果处理器上有item正在被加工,则不管是在if模块内部,还是外部[color=#ff0000]获取item type[/color],都应该是一样的结果。
但Output Console观察到的结果却显示:只有在if模块内部才能正确获取到item type,写在if代码块外部的语句无效。
点赞
0
收藏
0
────
0
人觉得很赞
────
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
举报
2 回复
zorsite
楼主
回复
举报
2018-5-17 10:16:54
[i=s] 本帖最后由 zorsite 于 2018-5-18 13:29 编辑 [/i]
忽然有些觉悟。
将item的声明移出if模块,放在if语句前面,则两行获取item type的代码都有效。
在if模块内部声明的变量仅在模块内生效,也不能传递至else代码块。
回复
评论
举报
慧娴亚伦
回复
举报
2018-5-20 09:27:41
声明变量作用域的问题
在代码执行过程中,某些变量值很可能发生变化,但是提前获取过的声明则不会发生改变。
回复
评论
举报
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
立即登录
点评
高级模式
本版积分规则
回帖后跳转到最后一页
返回
浏览过的版块
新人报道
新手入门
信息公告
技术交流2
提问题
写回答
写文章
草稿箱
登录开启您的创作之旅
快速登录,立即开启您的创作之旅~
登录
热门问答
查看更多
1
Flexsim初级建模工程师水平标准
Flexsim初级建模工程师水平标准
59
234
2
厂区生产线布局优化案例!新做的!
厂区生产线布局优化案例!新做的!
38
224
3
流水作业线的仿真
流水作业线的仿真
35
83
4
无意中找到的资料,非常适合于初学者
无意中找到的资料,非常适合于初学者
31
229
5
flexsim中文教程,pdf文档已整理-重新整理
flexsim中文教程,pdf文档已整理-重新整理
28
114
博主榜
admin
+ 5
首页
分类
目录
索引
我的