0
最初に複数の状態を必要とするGenServerを作成したいとします。特に、init
関数は、初期状態のいくつかの部分を知る必要があるタイマーを起動します。 GenServer.start_link
の2番目の引数がinit(arg)
に直接渡されることを理解しています。2つ以上のものでGenServer状態を初期化する
しかし、init
に初期化用に複数の状態引数を渡す方法を示す例は見つかりません。例えば、望ましい何かが次のようになります。
defmodule Application.Test do
require GenServer
def start_link(state1, state2) do
GenServer.start_link(__MODULE__, [state1, state2], [])
end
def init(state) do
# Use the state to launch timer
end
end
私は「 はトンの例を見つけることができる、と私は万能薬には本当に新しいですので、このdoesntのは私には慣用的なようです。これを行うためのより良い/より効率的な方法がありますか、これが最善の方法ですか?
を私はマップを使用することを好む - あなたが構造も、それを編集したい場合は、新しいを追加することはできませんので、タプルは、最良の選択ではありませんキー。 – PatNowak
状況に最も適したものを使用することができます。ここではタプルを使用しました。この例では、ラップする変数は2つしかないからです。 – Pfitz