Dire creo un Mailbox
utilizzando mailbox = Signal.mailbox Action
, dove type Action = Blah
, poi posso inviare le azioni a questo mailbox
utilizzando Signal.send mailbox.address Blah
, questo mi permette di ascoltare sulla mailbox.signal
, come così? Voglio dire, dopo tutto, digitare Mailbox
è solo un alias di {address : Signal.Address Action, signal : Signal.Signal Action}
, è perché, in elm, c'è un solo segnale per un certo tipo, quindi nello scenario sopra, non devo dire a elm di legare mailbox.signal
con mailbox.address
, elm si scoprirà da solo a causa della corrispondenza uno a uno tra l'indirizzo e il segnale di un certo tipo?Elm: come funziona la cassetta postale?
risposta
La possibilità per la cassetta postale di inserire eventi nel suo segnale è interamente basata su "magia", vale a dire, è implementato in modo nativo (in JavaScript) e non qualcosa che è possibile implementare. Ecco perché è un built-in nelle librerie standard.
Creare una casella di posta è un'azione imperativa e efficace (shhh, non dirlo a nessuno). Quindi se si utilizza:
mailbox1 = Signal.mailbox Blah
mailbox2 = Signal.mailbox Blah
queste due cassette postali saranno distinte. Invia un messaggio a mailbox2.address
darà come risultato un messaggio il mailbox2.signal
ma non mailbox1.signal
. Questo rompe la trasparenza referenziale, che è male, ma per ora non sta infrangendo tutto. (Questo può andare troppo lontano in una tangente, ma poiché è necessario Signal
per l'output e non è possibile avere Signal (Signal something)
, in pratica l'effetto non gestito della creazione della casella di posta non è un problema). Questa "perdita" verrà risolta in futuro. C'era già una proposta, ma sono state apportate grandi modifiche in diverse versioni della lingua.
- 1. Come i processi di Erlang accedono contemporaneamente alla cassetta postale
- 2. Akka: aggiunta di un ritardo a una cassetta postale duratura
- 3. Gestisci cassetta postale con contorno attore Akka MessageQueueAppendFailedException
- 4. In che modo la cassetta postale (coda messaggi) è implementata in Scala Actors?
- 5. Elementi errati della cassetta postale recuperati utilizzando l'API gestita dai servizi Web di Exchange in C#
- 6. Compilatore Elm in Elm?
- 7. Errore Swift-Mailer, "Indirizzo nella cassetta postale fornito [] non conforme a RFC"
- 8. ciclo For Each: Alcuni articoli get saltato quando scorrendo cassetta postale di Outlook per eliminare elementi
- 9. L'attore di Akka può eliminare i messaggi dalla sua cassetta postale, se necessario?
- 10. limite dimensioni casella postale
- 11. Prevenire la duplicazione postale
- 12. Importa email dalla casella postale AD
- 13. come modellare un indirizzo postale
- 14. Espressione regolare per il codice postale/codice postale olandese
- 15. Elm: come creeresti e stili la tua interfaccia utente?
- 16. Lavorare con elm e selezionare
- 17. Cosa significa _ in Elm?
- 18. Compilare la cassetta degli attrezzi Shogun sotto Windows per Matlab
- 19. Come stampare l'indice dell'opzione selezionata in Elm?
- 20. Come strutturare le librerie in Elm?
- 21. Come si confronta Elm con ClojureScript?
- 22. Codice postale dalla posizione
- 23. Come inviare un modulo in Elm?
- 24. Json Funzionalità di serializzazione della cassetta crono
- 25. Guzzle problema parametro postale
- 26. Elm "non trova il modulo"
- 27. Convalida codice postale canadese
- 28. Come mettere un controllo esteso WinForms sulla cassetta portautensili
- 29. elm genera un numero casuale
- 30. Persistenza dei dati in elm
Se chiamando 'Signal.mailbox' due volte crea due caselle di posta diverse, come funziona il codice nel tutorial [Comunicare con le cassette postali] (http://elm-lang.org/guide/reactivity), ad esempio' Signal.send contentMailbox. indirizzo "ciao!" 'lavoro? Poiché 'contentMailbox' è chiamato una seconda volta lì, dovrebbe creare un segnale diverso che non è quello usato in' main = Signal.map mostra contentMailbox.signal' dove viene chiamato una prima volta e quindi _ "ciao" _ dovrebbe non si presenta? – RAbraham