Rebol自我对象

时间:2009-09-21 19:46:12

标签: rebol

几周前我问过关于港口问题 Rebol Smallest Http Server in the World: why first wait listen-port?

listen-port是一个对象

第一个listen-port是self,所以仍然不明白为什么self不等于listen-port这就是我们需要的原因

http-port: first wait listen-port

如果wait返回listen-port并且第一个listen端口与self或listen-port相同则上面的代码与

不一样
http-port: wait listen-port

1 个答案:

答案 0 :(得分:1)

listen-port是一个端口!价值,而不是对象!值。一个港口!可以看作是对象的推导!数据类型和具有专门的目的。第一行为(与所有其他动作!值一样)是多态的。

对象!值,它返回在该对象上下文中定义的单词列表(加上特殊的自引用单词'self):

foo: make object! [bar: 3]
first foo
== [self bar]

对于港口!值,FIRST将根据端口有两种不同的行为!输入:

  • 客户端端口:它将PICK操作发送到端口内部处理程序(第一个端口==选择端口1)。

  • 服务器端口:它将调用ACCEPT操作到底层C套接字以检索新的连接端口!价值,允许与客户沟通。

所以:

wait listen-port

在事件发生时返回listen-port值。

http-port: first wait listen-port

返回一个新端口!连接到'http-port。

引用的客户端的值