跳转到内容

Rebol 编程/语言特性/对象

来自维基教科书,开放的书籍,开放的世界

对象是在 Rebol 中管理和访问数据的非常常见的方式。事实上,Rebol 系统的大部分都是用对象构建的。SYSTEM 对象可以被认为是 Rebol 的脊柱,所有非核心函数和数据都驻留在那里。这是你可以找到所有 VID、各种网络协议和所有中间函数的地方。

使用对象

[编辑 | 编辑源代码]

对象是用 MAKE 函数创建的。

示例

>> shopping-basket: make object! [fruits: 5 vegetables: 3]
>>

请注意,控制台上没有返回任何内容。对象可以保存所有类型的数据,甚至可以保存其他对象。

一个更大的示例,就像你在程序代码中通常编写的那样

shopping-basket: make object! [
  fruits: 5
  vegetables: 3
  dairy-products: 7
]

访问对象

[编辑 | 编辑源代码]

如果你想查看一个对象,你可能已经注意到,在其中键入名称不会返回任何内容。

>> shopping-basket
>>

你可以使用不同的方法来查看对象数据。

>> probe shopping-basket
make object! [
  fruits: 5
  vegetables: 3
]

可以使用以下方法返回更好的概述

>> ? shopping-basket
SHOPPING-BASKET is an object of value: 
   fruits          integer!  5 
   vegetables      integer!  3 
   total           integer!  8 

或者

>> print dump-obj shopping-basket 
   fruits          integer!  5 
   vegetables      integer!  3 
   total           integer!  8

这些函数不能在程序中用于从对象中获取值,因为它们只在控制台上打印信息。它们不产生返回值。

一种方法是使用路径表示法。

>> shopping-basket/fruits
== 5

有多种方法可以访问对象数据,无论是进行操作还是查看。

引用自身

[编辑 | 编辑源代码]

对象可以使用 SELF 来引用自身或自身内的其他变量和函数。

>> shopping-basket: make object! [fruits: 5 vegetables: 3 total: self/fruits + self/vegetables]
>> shopping-basket/total
== 8

请注意,上面的示例中 SELF 的使用不是必需的。

华夏公益教科书