我正在编写一个小型的解析库,我想让用户传递一个回调函数,以便在解析项目时处理项目,而不是等待输入结束。
我目前的(幼稚的)解决方案如下:
parse(Input, Callback) ->
parse(Input, <<>>, Callback).
parse(<<>>, Item, Callback) ->
Callback(Item);
parse(<<$\n, Rest/binary>>, Item, Callback) ->
Callback(Item),
parse(Rest, <<>>, Callback);
parse(<<C/utf8, Rest/binary>>, Item, Callback) ->
.parse(Rest, <<Item/binary, C/utf8>>, Callback).
然后在应用程序/模块中以如下方式调用:
my_lib:parse(Input, fun do_something/1).
根据我对效率指南的理解,这应该不会比本地电话慢多少,因为:
调用或应用Fun(Fun(),apply(Fun,[]))只比外部调用慢一点。
当查看一些OTP行为或应用程序的代码时,传递模块、函数和参数似乎是首选。是否有什么特殊原因?
遗憾的是,我没有足够的经验来形成问题的可用性方面的选项,我想知道以下内容:
从可用性的Angular 来看,当前库允许用户传递回调函数的首选方法是什么?
1条答案
按热度按时间xtupzzrd1#
我不确定性能/效率,但对于可用性/可维护性,您最好定义自己的行为,例如...