我需要一个使用PARSE
和COPY x
规则的函数,但不会在函数外部更改x
。我尝试使用FUNCTION
让它自动获取本地x
,但它不起作用:
>> f: function [t] [parse t [copy x to end]]
>> f ["a"]
== true
>> print x
a
答案 0 :(得分:3)
使用你的FUNCTION,你已经到了一半了。您可以结合两个最近的更改:
所以这会给你:
;; Note the subtle change of `x` to `x:` compared to your original version:
>> f: function [t] [parse t [copy x: to end]]
>> f ["a"]
== true
>> x
** Script error: x has no value
或者,您也可以使用/local
约定明确列出本地变量:
>> f: function [t /local x] [parse t [copy x to end]]
>> f ["a"]
>> x
** Script error: x has no value
答案 1 :(得分:2)
或者,或者,你可以使用一个单词! 在函数中,但在之外解析。
>> f: function [t] [x: none c: charset [#"a" -#"] parse t [copy x some c] print x]
>> f "a"
a
>> x
** Script error: x has no value
虽然这比其他替代方案有更多的开销,但如果像这样使用它可能对调试有帮助:
>> f: function [t] [x: 10101 c: charset [#"a" -#"z"] parse t [copy x some c] print x]
>> f ""
10101
这很明显,规则没有抓到任何东西。