erlang 在参数列表中描述函数

yquaqz18  于 2022-12-08  发布在  Erlang
关注(0)|答案(2)|浏览(182)

I have a function description like that:

-spec match_evaluator(ReplaceFun, Text, Regex) -> Result
   when ReplaceFun :: function(),
        Text :: string(),
        Regex :: string(),
        Result :: string().

match_evaluator(ReplaceFun, Text, Regex) ->

I would like to add a more detailed description of the parameters of the parameter ReplaceFun . ReplaceFun is a link to a function.
Something like that:

-type replace_fun(string(),[string()]) :: {string(), non_neg_integer()}.
% : bad type variable

I would like to define this type correctly (a function with two parameters and return type). Please, tell me how to correctly describe the type of this function.

63lcw9qa

63lcw9qa1#

例如,你可以写fun((string(), string()) -> string())来引用一个接受两个字符串并返回一个字符串的函数。如果你不关心参数或返回类型是什么,那么就用any()代替它们。我建议你去学习Erlang文档,以获得更多的选择。

zaqlnxep

zaqlnxep2#

有一个-spec的函数match_evaluator

-spec match_evaluator1(ReplaceFun, Text, Regex) -> Result
   when ReplaceFun :: fun((FullString :: string(), MatchResult :: [string()]) -> 
        (NewString :: string())),
        Text :: string(),
        Regex :: string(),
        Result :: string().

match_evaluator1(ReplaceFun, Text, Regex) ->
%..

这个解决方案的想法促使我通过@radrow,reference_manual和Erlang标准库socket_test_evaluator.erl的源代码(我在文件夹erlang/otp/erts/emulator/test中找到的)。
此函数的源代码为here

相关问题