爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 3737|回复: 0

[混合编程] IDL编程学习之字符串转变量or批量创建变量

[复制链接]

新浪微博达人勋

发表于 2018-9-7 11:23:19 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

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

x
实际编程中,经常需要新建一大堆变量,
字符串转变量的方法有2种,以下举例说明;
------------------------------------------------
比如我要新建变量组:
;v1=1
;v2=2
;v3=3
;v4=4
;v5=5

------------------------------------------------
方法1
先新建变量名的字符数组:
  x='v'+strtrim(string(indgen(5)+1),2)
  help,x
  print,x
得到:
X               STRING    = Array[5]
v1 v2 v3 v4 v5

------------------------------------------------
字符串转变量名:
  for i=0,4 do begin
  (scope_varfetch(x,/enter))=i+1
  endfor
------------------------------------------------
检验之:
print,'v1:',v1
print,'v2:',v2
print,'v3:',v3
print,'v4:',v4
print,'v5:',v5

结果:
v1:       1
v2:       2
v3:       3
v4:       4
v5:       5

成功!
------------------------------------------------
方法2
  x='v'+strtrim(string(indgen(5)+1),2)
  for i=0,4 do begin
    void=execute(x+'='+strtrim(string(i+1),2))
  endfor
  print,'v1:',v1
  print,'v2:',v2
  print,'v3:',v3
  print,'v4:',v4
  print,'v5:',v5

输出:
v1:       1
v2:       2
v3:       3
v4:       4
v5:       5

成功!
------------------------------------------------
核心技术总结
令QQQ=456
IDL>  (scope_varfetch('QQQ',/enter))=456
IDL> qqq
     456

IDL> void=execute('QQQ=456')
IDL> QQQ
     456

番外:execute在Java调用IDL代码中也用过,似乎是个能把字符串转为相应指令的函数
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

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