假设我使用
mailbox = Signal.mailbox Action
创建一个 Mailbox
,其中 type Action = Blah
,那么以后我就可以使用 Signal.send mailbox.address Blah
向这个 mailbox
发送操作,并且可以通过监听 mailbox.signal
来实现相应的功能,为什么呢?毕竟,类型 Mailbox
只是一个 {address : Signal.Address Action, signal : Signal.Signal Action}
的别名。难道是因为在 elm 中,对于某种类型只有一个信号,所以上述场景中,我不需要告诉 elm 如何将 mailbox.signal
绑定到 mailbox.address
,elm 会自己解决,因为地址和信号之间存在一对一的对应关系吗?
Signal.mailbox
两次会创建两个不同的邮箱,那么 与邮箱通信 教程中的代码Signal.send contentMailbox.address "hello!"
是如何工作的呢?因为在那里第二次调用了contentMailbox
,所以它应该创建一个不同的信号,而不是在main = Signal.map show contentMailbox.signal
中第一次调用时使用的那个信号,因此 "hello" 不应该出现。 - RAbraham