使用parse复制数据时,最大限度地减少命名空间污染

joh*_*hnk 3 rebol rebol3

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 ]
Run Code Online (Sandbox Code Playgroud)

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

小智 6

就R2而言.是的,将整个批次包装在上下文中(使用CONTEXT)是直截了当的.您也可以使用USE执行此操作:

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

正如格雷厄姆所说,使用函数的局部变量,默认情况下将NUMBERS设置为无.

我经常会使用USE向自己传达上下文是暂时的,或创建私有上下文.