Rebol Self Object - PullRequest
       7

Rebol Self Object

0 голосов
/ 21 сентября 2009

Я задал этот вопрос несколько недель назад о порте Rebol Самый маленький Http-сервер в мире: зачем сначала ждать listen-порт?

listen-порт - это объект

первый порт прослушивания - это self, поэтому я до сих пор не понимаю, почему self не равен порту прослушивания, поэтому нам нужен

http-port: first wait listen-port

если wait возвращает порт прослушивания, а первый порт прослушивания совпадает с портом self или listen, то приведенный выше код не совпадает с

http-port: wait listen-port

1 Ответ

1 голос
/ 22 сентября 2009

порт прослушивания - это порт! ценность, а не объект! значение. Порт! можно рассматривать как вывод из объекта! Тип данных и имеющий специализированное назначение. ПЕРВОЕ поведение (как и все другие действия! Значения) является полиморфным.

Для объекта! значения, он возвращает список слов, определенных в контексте этого объекта (плюс специальное самоссылающееся слово 'self):

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

Для порта! значения, FIRST будет иметь два различных поведения в зависимости от порта! тип:

  • клиентский порт: отправляет действие PICK внутреннему обработчику порта (первый порт == порт выбора 1).

  • порт сервера: он вызовет действие ACCEPT для нижележащего сокета C, чтобы получить новый порт подключения! значение, позволяющее общаться с клиентом.

Итак:

wait listen-port

возвращает значение порта прослушивания, когда происходит событие.

http-port: first wait listen-port

возвращает новый порт! значение, связанное с клиентом, на которое ссылается 'http-порт.

...