在JavaScript中,您可以动态调用如下方法:
** (exit) exited in: GenServer.call({:global, {Que.Server, SolarisCards.ShopifyIntegration.Workers.SyncWorker}}, {:add_job, SolarisCards.ShopifyIntegration.Workers.SyncWorker, %{}}, 5000)
** (EXIT) an exception was raised:
** (UndefinedFunctionError) function ExUtils.Module.name/1 is undefined (module ExUtils.Module is not available)
ExUtils.Module.name(SolarisCards.ShopifyIntegration.Workers.SyncWorker)
(que) lib/que/server.ex:81: Que.Server.handle_call/3
(stdlib) gen_server.erl:661: :gen_server.try_handle_call/4
(stdlib) gen_server.erl:690: :gen_server.handle_msg/6
(stdlib) proc_lib.erl:249: :proc_lib.init_p_do_apply/3
(elixir) lib/gen_server.ex:989: GenServer.call/3
(solaris_cards) lib/solaris_cards/setup.ex:12: SolarisCards.Setup.do_setup_data/0
您可以将方法编写为字符串并动态调用它。您也可以这样做:
iex(my_app@127.0.0.1)1> Que.Persistence.Mnesia.setup!
想知道如果您可以在Swift中做这样的事情,我是Swift的新手。
答案 0 :(得分:-1)
您可以使用 KVO 模式解决此问题,但是正如@David Pasztor评论所说。
当您尝试以强类型的编译语言动态调用方法时,很可能在解决问题的方法上不正确。对于Swift来说尤其如此。说明您要解决的问题,认为您认为必须动态地使用所有方法,而不是尝试将JS代码逐行转换为Swift。
但是 KVO 可以用于解决此类问题,我建议您阅读它,它可以使您动态地观察按键,并据此进行操作。
请紧记 KVO 是使用Ojbc
编译器进行编译的。