Red 是否可以用红色来测试数值?对于上下文中的变量而不是全局上下文中的变量?

Red 是否可以用红色来测试数值?对于上下文中的变量而不是全局上下文中的变量?,red,Red,在上一个示例中,探测值为“”当检测到“a在全局上下文中的值”时,返回true。但我想专门在本地上下文中测试“a”,有语法可以这样做吗 context [ probe value? 'a; false ] context [ a: 1 probe value? 'a; true ] ; would like false instead of true a: 1 context [

在上一个示例中,探测值为“”当检测到“a在全局上下文中的值”时,返回true。但我想专门在本地上下文中测试“a”,有语法可以这样做吗

    context [
        probe value? 'a; false
    ]

    context [
        a: 1
        probe value? 'a; true
    ]

    ; would like false instead of true
    a: 1
    context [
        probe value? 'a; true
    ]
是否可以用红色来测试数值?对于上下文中的变量而不是全局上下文中的变量

根据定义,没有。因为没有“全球背景”这样的东西

请记住,“Rebol(红色)实际上根本没有作用域”。。。“Rebol(红色)伪造了它。”

(见:)

Rebol已经绑定了?因为你随便问一个字!它的绑定位置(如果在任何地方)。瑞德称之为上下文?。所以你能做的就是询问一个词的绑定是否与你关心的上下文有关

ctx1: context [a: 10]
ctx2: context [a: 20]

word: bind 'a ctx1

print ctx1 = context? word ; true
print ctx2 = context? word ; false
因此,如果您所说的“全局上下文”实际上是所谓的系统/单词对象,那么这可以作为您的测试:

context [
    probe value? 'a ; false
]

context [
    a: 1
    probe system/words <> context? 'a ; true
]

a: 1
context [
    probe system/words <> context? 'a ; false
]
上下文[
探测值?'a;错误
]
上下文[
a:1
探测系统/单词上下文?'a;正确
]
a:1
上下文[
探测系统/单词上下文?'a;错误
]
至于这是否适合你的目的,我不知道。只要记住Rebol/Red中没有作用域,除非你装配了一些对你所做的工作足够有效的假近似值

是否可以用红色来测试数值?对于上下文中的变量而不是全局上下文中的变量

根据定义,没有。因为没有“全球背景”这样的东西

请记住,“Rebol(红色)实际上根本没有作用域”。。。“Rebol(红色)伪造了它。”

(见:)

Rebol已经绑定了?因为你随便问一个字!它的绑定位置(如果在任何地方)。瑞德称之为上下文?。所以你能做的就是询问一个词的绑定是否与你关心的上下文有关

ctx1: context [a: 10]
ctx2: context [a: 20]

word: bind 'a ctx1

print ctx1 = context? word ; true
print ctx2 = context? word ; false
因此,如果您所说的“全局上下文”实际上是所谓的系统/单词对象,那么这可以作为您的测试:

context [
    probe value? 'a ; false
]

context [
    a: 1
    probe system/words <> context? 'a ; true
]

a: 1
context [
    probe system/words <> context? 'a ; false
]
上下文[
探测值?'a;错误
]
上下文[
a:1
探测系统/单词上下文?'a;正确
]
a:1
上下文[
探测系统/单词上下文?'a;错误
]

至于这是否适合你的目的,我不知道。请记住,Rebol/Red中没有范围,除非你装配了一些对你所做的工作足够有效的假近似值。

这里有一个解决方案,不需要在“全局”系统/单词中搜索,而是在“局部”自我中搜索

>> a: 1
== 1
>> context [
[        probe all [
[            find words-of self 'a 
[            value? pick find words-of self 'a 1
[        ]
[        probe value? 'a
[    ]
none
true
== make object! []
>> 
>> context [
[        probe all [
[            find words-of self 'a 
[            value? pick find words-of self 'a 1
[        ]
[        probe value? 'a
[        a: 2
[    ]
none
false
== make object! [
   a: 2
]
>> 
>> context [
[        a: 2
[        probe all [
[            find words-of self 'a 
[            value? pick find words-of self 'a 1
[        ]
[        probe value? 'a
[    ]
true
true
== make object! [
    a: 2
]

这里提供的解决方案不需要在“全局”系统/单词中搜索,而是在“本地”自我搜索

>> a: 1
== 1
>> context [
[        probe all [
[            find words-of self 'a 
[            value? pick find words-of self 'a 1
[        ]
[        probe value? 'a
[    ]
none
true
== make object! []
>> 
>> context [
[        probe all [
[            find words-of self 'a 
[            value? pick find words-of self 'a 1
[        ]
[        probe value? 'a
[        a: 2
[    ]
none
false
== make object! [
   a: 2
]
>> 
>> context [
[        a: 2
[        probe all [
[            find words-of self 'a 
[            value? pick find words-of self 'a 1
[        ]
[        probe value? 'a
[    ]
true
true
== make object! [
    a: 2
]

我想最简单的支票是

context [
    probe in self 'a ; none
]

它返回
none
,而不是
false
,但这是唯一的其他错误值,因此完全适合进行检查。如果您需要将其设置为
false
,您可以将
设置为logic

我认为最简单的检查是

context [
    probe in self 'a ; none
]


它返回
none
,而不是
false
,但这是唯一的其他错误值,因此完全适合进行检查。如果您需要将其设置为
false
,您可以将
设置为逻辑

确实更好。我刚刚添加了它。我做了非常类似的一个,但没有看到你的:
>a:1上下文[probe same?self context?]a];>>false
@daveanderson我甚至不理解上下文[(a:1)self'a]中的探测返回none,而它不应该返回none,因为有一个:1?@user310291我不确定,但我注意到当你计算它时,返回的对象没有
a
值,因此,paren必须阻止在对象中定义该词。您可以在将块提供给
上下文之前
编写
该块,并且将事先对其进行评估。真的更好。我刚刚添加了它。我做了非常类似的一个,但没有看到你的:
>a:1上下文[probe same?self context?]a];>>false
@daveanderson我甚至不理解上下文[(a:1)self'a]中的探测返回none,而它不应该返回none,因为有一个:1?@user310291我不确定,但我注意到当你计算它时,返回的对象没有
a
值,因此,paren必须阻止在对象中定义该词。你可以在给
上下文
之前编写
块,然后对块进行评估。
Red没有这个功能(现在?
不是
上下文吗?
native做你想要的吗?@user310291看,不知道他们重命名了BIND?“霍斯蒂尔福克,谢谢你的背景?”?似乎这就是我想要的:)
Red没有这个(还?
不是
context吗?
native做你想要的吗?@user310291看,不知道他们已经重命名BIND了吗?“霍斯蒂尔福克,谢谢你的背景?”?似乎这就是我想要的:)如果我只提前知道'a'的值就可以了?我不理解你的问题?我想测试变量a是否已经在本地上下文中声明,无论a的值是什么:1,2,“test”。。。在您的示例中,您测试值a=1?或者我误解了?不,我首先测试a这个词在object的词中是否存在,然后测试存在的词是否有值。我看到我的回答中有一些遗物。我会纠正这一点,如果我只提前知道'a'的值就可以了?我不理解你的问题?我想测试变量a是否已经在本地上下文中声明,不管a的值是什么:1,2,“test”。。。在您的示例中,您测试值a=1?或者我误解了?不,我首先测试a这个词在object的词中是否存在,然后测试存在的词是否有值。我看到我的回答中有一些遗物。我会纠正的