gpt4 book ai didi

object - Rebol 2 中对象上的位置 PICK 有什么作用,等效的 Rebol 3 是什么?

转载 作者:行者123 更新时间:2023-12-01 09:32:00 26 4
gpt4 key购买 nike

在 Rebol 2 中:

>> foo: make object! [a: 10 b: 20]

>> foo/a
== 10

>> foo/b
== 20

>> first foo
== [self a b]

>> second foo
== [make object! [
a: 10
b: 20
] 10 20]

>> third foo
== [a: 10 b: 20]

>> fourth foo
** Script Error: fourth expected series argument of type:
series date port tuple event
** Near: fourth foo

因此,您可以将其作为值 1、2、3 的 block 来选择。但是在 Rebol 3 中就可以进行位置选择:

>> first foo
** Script error: cannot use pick on object! value
** Where: first
** Near: first foo

我认为这已经被弃用了(比如从一个函数中挑选出它的参数列表)。但是,我正在尝试翻译一些类似以下内容的代码:

bar: construct/with (third foo) mumble

(a) 这段代码的意义何在?

(b) 我如何将它翻译成 Rebol 3?

最佳答案

确实不推荐使用 firstsecondthird 等进行反射(原因可能很明显)。

一般替换为REFLECT ,它接受一个 FIELD 参数来指定要提取的信息。

为方便起见,REFLECT 依次由一组函数(某些人称为“反射器”)包装:SPEC-OF、BODY-OF、WORDS-OF、VALUES-OF 等。这些是使用 FIRST 等人的反射。幸运的是,这些“反射器”也已向后移植到 R2 (2.7.7+)。

如何将 third foo 翻译成 Rebol 3?

物体上反射 THIRD 的对应物是 BODY-OF。

construct/with (third a) b 成语的意义何在?

它允许您通过合并 A 和 B(A 中的值优先于 B)来构造一个新对象。

因此,例如,您可以使用此习惯用法通过将用户提供的实际选项与默认对象合并来创建完整的“选项”对象。

关于object - Rebol 2 中对象上的位置 PICK 有什么作用,等效的 Rebol 3 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14330738/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com