3

当使用parse从数据中提取值时,我经常最终声明全局变量来捕获copy数据。例如,

numbers: none
rule: [ thru 5 copy numbers to 10 to end ]
parse [ 1 2 3 4 5 6 7 8 9 10 ] [ rule ]

numbers在不使用全局的情况下,最好的方法是什么?我应该定义一个context来包装整个批次还是有更优雅的解决方案?

4

2 回答 2

6

在 R2 方面。是的,将整个内容包装在一个上下文中(使用 CONTEXT)是直截了当的。您也可以使用 USE 执行此操作:

使用 [数字] [
    数字:无
    规则:[通过 5 个副本数到 10 到结束]
    解析 [1 2 3 4 5 6 7 8 9 10] [规则]
]

正如 Graham 所说,使用函数的局部变量,默认情况下将 NUMBERS 设置为 none。

我经常会使用 USE 来向自己传达上下文是瞬态的,或者创建一个私有上下文。

于 2013-05-07T01:29:11.223 回答
2

如果不声明上下文中的变量,上下文将无法工作

>> unset 'a
>> context [ parse "aa" [ copy a to end ]]
>> a
== "aa"

以同样的方式,您可以在函数内使用您的解析规则,并将变量声明为本地,以阻止它们污染全局名称空间。

于 2013-05-06T23:51:58.073 回答