otp

    2熱度

    2回答

    我有我在ETS表中存儲一些數據的模塊 現在我試圖過濾迭代ETS表的數據,但總是變空[List]。 ( - 匹配( '$ end_of_table',ACC) - 這是一個匹配每次>加;) -module(t). -export([matching/0]). matching() -> matching(ets:first(auth), []). matching('$end_of_tab

    1熱度

    1回答

    我正在關注http://learnyousomeerlang.com/static/erlang/kitty_gen_server.erl。 我有我的應用程序邏輯在temple.erl裏面。所有這些代碼都經過測試&按我的預期運行。我的land.erl旨在成爲包含聖殿的服務器。 我的理解(請糾正任何無知)是我可以使用gen_server來抽象消息傳遞並以最小的開銷跟蹤狀態。 我明白,在我的初始化函數

    0熱度

    1回答

    我編寫了一個非常簡單的OTP應用程序A.由於erlang.mk,此應用程序的默認設置在.app文件中設置。 我現在正在使用我的應用程序A作爲新應用程序B中的依賴項。此應用程序需要與默認設置不同的設置。 什麼是我的應用程序B覆蓋其依賴項,環境應用程序A的正確方法? 一些想法: 由於A由B所需要,A首先被啓動,因此應用:set_env/3不會削減它。 如果可能的話,我想避免搞亂啓動參數,如-confi

    2熱度

    1回答

    我有一個運行在其自己的Erlang節點中的事件管理器。我想將其用作簡單的事件代理,並讓其他應用程序在其他節點上通過添加自己的事件處理程序來訂閱它。 我的測試設置是這樣的(對不起可怕的壓痕) 運行此我得到這樣一個錯誤: {'EXIT',{undef,[{event_handler_a,init,[[]],[]}, {gen_event,server_add_handler,4,

    3熱度

    1回答

    在靈藥中,我們有spawn/1產生一個沒有任何參數的匿名函數和spawn/3產生一個具有參數的完全限定的函數。但是,我如何產生一個需要參數的匿名函數呢? 示例:我想運行接收消息的匿名函數,直到滿足特定條件。參數是函數本身能夠執行遞歸步驟。 loop = fn f -> receive do {:end, pid} -> send(pid, "exiting") {_,

    2熱度

    2回答

    我有一個GenServer,負責聯繫外部資源。調用外部資源的結果並不重要,有時可能會出現故障,因此使用handle_cast似乎適用於其他代碼部分。我的外部資源有一個類似界面的模塊,我使用一個GenServer來訪問資源。到現在爲止還挺好。 但是,當我試圖寫這個gen_server測試,我無法弄清楚如何測試handle_cast。我有GenServer的接口功能,我試圖測試那些,但除非GenSer

    0熱度

    1回答

    我有一個測試模塊和一個simple_one_for_one主管。 test.erl -module(test). -export([ run/1, do_job/1 ]). run(Fun) -> test_sup:start_child([Fun]). do_job(Fun) -> Pid = spawn(Fun), io:for

    0熱度

    1回答

    我有一個測試模塊和一個one_for_one主管。 test.erl -module(test). -export([do_job/1,run/2, start_worker/1]). run(Id, Fun) -> test_sup:start_child(Id, [Fun]). do_job(Fun) -> Fun(). start_worker(Ar

    1熱度

    1回答

    我有一個Erlang應用程序,監控程序啓動gen_server。產生的gen_server在它的init/1中有一個邏輯來掛鉤一個新的進程到管理員。 當它只是做這個操作, supervisor:start_child(supervisor_name, Child_spec), 在init/1中的應用程序內掛了。但如果我用, rpc:cast(node(), supervisor, start_

    0熱度

    1回答

    試圖通過其PID終止一個孩子沒有工作的孩子,就應該根據文檔:https://hexdocs.pm/elixir/1.3.3/Supervisor.html#terminate_child/2 iex(7)> {:ok, sup} = Supervisor.start_link([], strategy: :one_for_one) {:ok, #PID<0.383.0>} iex(