跳转至

在F​​OREACH 中使用 HASH

原文链接:https://www.nv5geospatialsoftware.com/Learn/Blogs/Blog-Details/using-a-hash-with-foreach

18805 文章评分:

5.0

在 F​​OREACH 中使用 HASH

匿名 2015年10月13日,星期二

FOREACH 循环是 IDL 中一个方便的工具,允许用户遍历数组中的每个元素,而无需确定其大小。启动循环的语法是:

foreach 元素, 变量, 索引 do

第一个参数“元素”不需要预先定义,它是保存当前迭代循环元素的变量。第二个参数是包含要遍历的数组、列表或哈希的 IDL 变量。第三个参数“索引”是可选的,包含当前循环的索引。当使用列表或数组时,这第三个参数是跟踪当前迭代的好方法。

然而,对于 HASH,第三个可选参数将是当前键/值对的,而第一个参数“元素”将是。这对于诸如为图形添加标题之类的事情很有用,因为键可以是字符串。下面的示例说明了如何做到这一点。

x = findgen(21)/10 - 1.0

i = 1

data = orderedhash()

data['linear'] = x

data['squared'] = x^2

data['cubed'] = x^3

p = list()

foreach this_data, data, type do begin

p.add, plot(x, this_data, LAYOUT=[3,1,i], TITLE=type, THICK=3, /current)

i++

endforeach

(p[0]).COLOR= 'red'

(p[1]).COLOR= 'green'

(p[2]).COLOR= 'blue'

生成的图形如下所示:

在这个例子中需要注意几点:

首先,由于第三个可选参数是 HASH 的键,如果需要循环的数字索引,则必须通过在循环中递增一个值(我使用了“i”)来手动处理。

其次,使用 ORDEREDHASH 很重要。没有它,绘图的顺序不一定符合预期。当我使用常规 HASH 运行此程序时,生成的图形是左侧为“平方”,中间为“线性”,右侧为“立方”。

最后,我使用了一个列表来保存 plot 函数返回的对象,这使我能够在图形初始化后更改绘图的颜色。LIST::ADD 方法将绘图逐个添加到列表中。

基于计算机的培训 在 ENVI 中使用 Landsat 地表反射率高等级数据产品