当使用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
来包装整个批次还是有更优雅的解决方案?
在 R2 方面。是的,将整个内容包装在一个上下文中(使用 CONTEXT)是直截了当的。您也可以使用 USE 执行此操作:
使用 [数字] [ 数字:无 规则:[通过 5 个副本数到 10 到结束] 解析 [1 2 3 4 5 6 7 8 9 10] [规则] ]
正如 Graham 所说,使用函数的局部变量,默认情况下将 NUMBERS 设置为 none。
我经常会使用 USE 来向自己传达上下文是瞬态的,或者创建一个私有上下文。
如果不声明上下文中的变量,上下文将无法工作
>> unset 'a
>> context [ parse "aa" [ copy a to end ]]
>> a
== "aa"
以同样的方式,您可以在函数内使用您的解析规则,并将变量声明为本地,以阻止它们污染全局名称空间。