Alle Datentypen verarbeiten
Nachrichten, die im JSON-Format (Strings, Zahlen, True, False oder Null) dargestellt werden können, oder Listen, Regeln oder Assoziationen, die solche Elemente enthalten, sind wörtlich gegeben.
In[1]:=
![Click for copyable input](assets.de/process-any-type-of-data/In_20.png)
listener = ChannelListen["example"]
Out[1]=
![](assets.de/process-any-type-of-data/O_21.png)
In[2]:=
![Click for copyable input](assets.de/process-any-type-of-data/In_21.png)
(ChannelSend["example", #]) & /@ {"string", 100, True, {1, 2, 3},
"a" -> "b", {"c" -> 1}, <|"d" -> True|>};
In[3]:=
![Click for copyable input](assets.de/process-any-type-of-data/In_22.png)
listener["Message", All]
Out[3]=
![](assets.de/process-any-type-of-data/O_22.png)
Nachrichten, die Code enthalten, werden in HoldComplete gewrappet. So können Sie diese vor dem Auswerten untersuchen.
In[4]:=
![Click for copyable input](assets.de/process-any-type-of-data/In_23.png)
ChannelSend["example", Unevaluated[Print["hello"]]];
In[5]:=
![Click for copyable input](assets.de/process-any-type-of-data/In_24.png)
listener["Message"]
Out[5]=
![](assets.de/process-any-type-of-data/O_23.png)
In[6]:=
![Click for copyable input](assets.de/process-any-type-of-data/In_25.png)
listener["Message"] // ReleaseHold
![](assets.de/process-any-type-of-data/O_24.png)
Erzeugen Sie einen Kanal, der komprimierte Notebooks sendet und das empfangene Notebook in einem neuen Fenster öffnet.
In[7]:=
![Click for copyable input](assets.de/process-any-type-of-data/In_26.png)
CreateChannel["nb", ChannelPreSendFunction -> (Compress[#1] &),
HandlerFunctions ->
Association[
"MessageReceived" -> (CreateWindow[Uncompress[#Message]] &)]]
Out[7]=
![](assets.de/process-any-type-of-data/O_25.png)
Starten Sie den Kanal.
In[8]:=
![Click for copyable input](assets.de/process-any-type-of-data/In_27.png)
listener = ChannelListen["nb"]
Out[8]=
![](assets.de/process-any-type-of-data/O_26.png)
Erstellen Sie ein Notebook und senden Sie es an den Kanal.
In[9]:=
![Click for copyable input](assets.de/process-any-type-of-data/In_28.png)
nb = DocumentNotebook[{TextCell["My Report", "Section"],
TextCell["Lorem ipsum dolor sit amet:", "Text"],
ExpressionCell[
ContourPlot[x + Sin[x^2 + y^2], {x, -4, 4}, {y, -4, 4},
Contours -> 9, ContourShading -> ColorData[35, "ColorList"]]]},
StyleDefinitions -> FrontEnd`FileName[{"Article"}, "Preprint.nb"],
WindowTitle -> "My Report", Background -> LightOrange]
Out[9]=
![](assets.de/process-any-type-of-data/O_27.png)
In[10]:=
![Click for copyable input](assets.de/process-any-type-of-data/In_29.png)
ChannelSend["nb", nb]
Out[10]=
![](assets.de/process-any-type-of-data/O_28.png)
Das empfangene Notebook.
Out[11]=
![](assets.de/process-any-type-of-data/O_29.png)