Закрытия блоков/Java Ruby в C

A Subject или Observable не имеет текущего значения. Когда значение испускается, оно передается подписчикам, а Observable выполняется с ним.

Если вы хотите иметь текущее значение, используйте BehaviorSubject, который предназначен именно для этой цели. BehaviorSubject сохраняет последнее испущенное значение и немедленно отправляет его новым подписчикам.

Он также имеет метод getValue() для получения текущего значения.

6
задан Mohsen Nosratinia 8 May 2015 в 13:27
поделиться

3 ответа

Понятие закрытий требует понятия контекстов. Контекст C основан на стеке и регистрах ЦП, так для создания блока/закрытия, необходимо смочь управлять указателем вершины стека в корректном (и повторно используемый) путь, и хранилище/восстановление регистрируется по мере необходимости.

Путем это сделано интерпретаторами, или виртуальные машины должен иметь a context структура или что-то подобное, и не использование стек и регистры непосредственно. Эта структура отслеживает стек и дополнительно некоторые регистры при разработке регистра базирующийся VM. По крайней мере, это - самый простой способ сделать это (хотя немного менее производительный, чем на самом деле отображающиеся вещи правильно).

10
ответ дан 8 December 2019 в 16:14
поделиться

Я на самом деле не реализовал ни одного из этого, поэтому возьмите его с мешком соли.

Существует две части к закрытию: среда данных и среда кода. Как Вы сказал, можно, вероятно, передать пустоту* для обработки ссылок на данные. Вы могли, вероятно, использовать setjmp и longjmp для реализации нелинейных переходов потока управления, которых требует повреждение Ruby.

Если Вы хотите закрытия, необходимо, вероятно, программировать на языке, который на самом деле поддерживает их.:-)

ОБНОВЛЕНИЕ: Интересные вещи происходят в Лязге. Они моделировали закрытие для C. http://lists.cs.uiuc.edu/pipermail/cfe-dev/2008-August/002670.html мог бы оказаться интересным чтением.

3
ответ дан 8 December 2019 в 16:14
поделиться

Существует хороший набор слайдов на Блоках Ruby как часть "Направляющих со Страстью" курс:

Ruby_Blocks.pdf

Это покрывает представление блока, как они получают передаваемые аргументы и выполняемый, и еще больше в вещи как объекты Proc. Это очень ясно объяснено.

Это могло бы затем представлять интерес посмотреть на то, как парни JRuby обработали их в своем парсинге к Java. Смотрите на источник в codehaus.

2
ответ дан 8 December 2019 в 16:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: