Скажем, я создать Mailbox
используя mailbox = Signal.mailbox Action
, где type Action = Blah
, позже я могу отправить действия в этом mailbox
с помощью Signal.send mailbox.address Blah
, это позволяет мне слушать mailbox.signal
, как же так? Я имею в виду, в конце концов, тип Mailbox
- это просто псевдоним {address : Signal.Address Action, signal : Signal.Signal Action}
, это потому, что в вязах есть только один сигнал для определенного типа, поэтому в приведенном выше сценарии мне не нужно указывать вяза для привязки mailbox.signal
с mailbox.address
, elm выяснит себя из-за взаимно однозначного соответствия между адресом и сигналом определенного типа?Elm: как работает почтовый ящик?
ответ
Способность почтового ящика размещать события, которые вы отправляете на него в свой сигнал, полностью основана на «магии», то есть реализована изначально (в JavaScript), а не в том, что вы могли бы реализовать самостоятельно. Вот почему он встроен в стандартные библиотеки.
Создание почтового ящика - это императивное, эффективное действие (shhh, не говорите никому). Поэтому, если вы используете:
mailbox1 = Signal.mailbox Blah
mailbox2 = Signal.mailbox Blah
эти два почтовых ящика будут отличаться. Отправить сообщение для mailbox2.address
приведет к сообщению на mailbox2.signal
, но не mailbox1.signal
. Это нарушает ссылочную прозрачность, что плохо, но пока это не нарушает все. (Это может зайти слишком далеко в касательную, но потому, что вам нужно Signal
для вывода и не может иметь Signal (Signal something)
, на практике неуправляемый эффект создания почтового ящика не возится). Эта «утечка» будет исправлена в какой-то момент в будущем. Уже было предложение, но большие изменения были поставлены в разных версиях языка.
- 1. Как работает почтовый ящик Yahoo?
- 2. Elm отправить сообщение в почтовый ящик в функции обновления
- 3. Почтовый ящик фляжки или почтовый ящик
- 4. Почтовый ящик zend не работает
- 5. Как заказать почтовый ящик?
- 6. Японский текст как почтовый ящик
- 7. Как создать почтовый ящик Exchange?
- 8. Wordpress категория почтовый ящик
- 9. Можно ли добавить функцию «поиска» в почтовый ящик «Почтовый ящик»?
- 10. Почему этот простой почтовый ящик не работает?
- 11. System.Net.Mail.SmtpFailedRecipientException: Почтовый ящик недоступен.
- 12. Как дублировать почтовый ящик IMAP
- 13. Почтовый ящик для андроидов
- 14. «SmtpFailedRecipientException: Почтовый ящик недоступен», когда почтовый ящик доступен
- 15. Почтовый ящик Magento отправляет
- 16. Почтовый ящик на сайте
- 17. Автоматический поддельный почтовый ящик
- 18. почтовый ящик Django-Userena
- 19. Почтовый ящик Outlook пустой
- 20. System.Net.Mail.SmtpException: Почтовый ящик недоступен
- 21. Как часто почтовый слушатель node.js регистрирует почтовый ящик?
- 22. Почтовый ящик не входит в объем
- 23. PHP почтовый ящик проблема стрельба
- 24. Отправка диаграммы в почтовый ящик
- 25. Как сделать такой почтовый ящик, как JPopupMenu?
- 26. Почтовый ящик показывает код-PHPMailer
- 27. Буквенный почтовый ящик в андроиде
- 28. Перезапустить почтовый ящик после сбоя?
- 29. Вложение изображения в почтовый ящик
- 30. Не удается удалить почтовый ящик
Если вызов 'Signal.mailbox' дважды создает два разных почтовых ящика, как работает код в учебнике [Communicating with Mailboxes] (http://elm-lang.org/guide/reactivity), то есть' Signal.send contentMailbox. адрес "привет!" 'работа? Поскольку «contentMailbox» вызывается во второй раз там, он должен создать другой сигнал, который не используется в «main = Signal.map show contentMailbox.signal», где он вызывается в первый раз и, следовательно, «привет» _ должен не появляется? – RAbraham