-3

私はphoenixフレームワークを使って書かれた簡単なチャットアプリを持っています。どのように私はエリキシルでマップ内のデータにアクセスできますか?

は、私は、これはそれがすべての詳細で素敵なマップを与えること

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

ために用いた方法イムあるソケット

内の一部のデータにアクセスしたいです。これは

[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

この例でどのような価値を得ようとしているのかははっきりしていません。 –

+0

トピック: "room:Testuser" これはアクセスしたい値です – smartechno

+3

'socket.topic'のような意味ですか? – Dogbert

答えて

1

thingあなたはいじりされていることではありませんコンソールで示したサンプルの結果であり、この方法

を使用して、使用可能な は全室(::「TESTUSERの部屋」のトピック)を取得するための最良の方法何です地図ごとに。それは私たちが通常structと呼ぶものです! Structはよく定義されたフィールドを持つマップです(他の言語から知っているかもしれないオブジェクトに似ています)。

検査時にすでに検出されているので、すべてのキー値のペアを読み取ることができます。

構造体のフィールドにアクセスする場合は、struct.fieldと言うことができます。詳細については、Elixirウェブサイトのチュートリアルをお読みください。

+0

'Access'ビヘイビアが定義されていない限り、構造体で' [] '構文を使うことはできません... –

関連する問題