-3

Ich habe einfache Chat-App mit Phoenix Framework geschrieben.Wie kann ich auf Daten in der Karte in Elixir zugreifen

Ich möchte einige Daten in die Buchse für den Zugriff auf

dies die Methode im Aus diesem

def join("room:" <> _user, _, socket) do 
    IO.inspect socket 
    send self(), :after_join 
    {:ok, socket} 
    end 

verwendet, wird es schön Karte mit allen Details geben. was ist der beste Weg, um alle Zimmer zu bekommen (Thema: „Zimmer: Testuser“) zur Verfügung mit dieser Methode

dies ist das Probenergebnis in der Konsole zeigte

[info] JOIN room:Testuser to PhoenixChat.RoomChannel 
    Transport: Phoenix.Transports.WebSocket 
    Parameters: %{} 
%Phoenix.Socket{assigns: %{user: "Testuser"}, channel: PhoenixChat.RoomChannel, 
channel_pid: #PID<0.409.0>, endpoint: PhoenixChat.Endpoint, 
handler: PhoenixChat.UserSocket, id: nil, joined: false, 
pubsub_server: PhoenixChat.PubSub, ref: nil, 
serializer: Phoenix.Transports.WebSocketSerializer, topic: "room:Testuser", 
transport: Phoenix.Transports.WebSocket, transport_name: :websocket, 
transport_pid: #PID<0.375.0>} 
[info] Replied room:Testuser :ok 
+0

Es ist nicht sehr klar, welchen Wert Sie in diesem Beispiel erhalten möchten - könnten Sie etwas expliziter sein? –

+0

Thema: "Raum: Testuser" Dies ist der Wert, den ich zugreifen möchte – smartechno

+3

Sie meinen wie 'socket.topic'? – Dogbert

Antwort

1

Die thing Sie tüfteln nicht ist Karte pro sagen. Das nennen wir normalerweise struct! Struct ist eine Karte mit gut definierten Feldern (ähnlich den Objekten, die Sie aus anderen Sprachen kennen).

Wie Sie bereits bei der Inspektion herausgefunden haben, können Sie alle Schlüsselwertpaare lesen. Wenn Sie auf das Feld einer Struktur zugreifen möchten, können Sie struct.field sagen. Bitte lesen Sie das Tutorial auf der Elixir Website für weitere Informationen.

+0

Ich glaube nicht, dass Sie die '[]' -Syntax für Strukturen verwenden können, es sei denn, es ist ein 'Access'-Verhalten definiert ... –

Verwandte Themen