Functional programming 检查字符串是否包含float或int

Functional programming 检查字符串是否包含float或int,functional-programming,erlang,pattern-matching,Functional Programming,Erlang,Pattern Matching,我需要编写erlang函数,它接受一个字符串,然后在字符串包含浮点或整数时执行不同的操作。我曾想过使用string:to_float和string:to_integer,但是我想知道是否可以使用模式匹配中的那些来匹配不同的子句,或者是否需要使用ifs来进行一个子句中的签入。Erlang模式匹配不是解决这个问题的好方法,因为需要处理的数字表示种类繁多。您最好尝试使用一个函数,然后使用保护将浮点数与整数分开: float_or_integer(F) when is_float(F) -> fl

我需要编写erlang函数,它接受一个字符串,然后在字符串包含浮点或整数时执行不同的操作。我曾想过使用string:to_float和string:to_integer,但是我想知道是否可以使用模式匹配中的那些来匹配不同的子句,或者是否需要使用ifs来进行一个子句中的签入。

Erlang模式匹配不是解决这个问题的好方法,因为需要处理的数字表示种类繁多。您最好尝试使用一个函数,然后使用保护将浮点数与整数分开:

float_or_integer(F) when is_float(F) -> float;
float_or_integer(I) when is_integer(I) -> integer;
float_or_integer(L) ->
    Number = try list_to_float(L)
             catch
                 error:badarg -> list_to_integer(L)
             end,
    float_or_integer(Number).
将前两个函数的主体替换为所解决问题的特定逻辑


如果您传递的参数转换失败,您将得到一个
badarg
异常,这是完全合适的。

谢谢您的回答。我觉得这很有帮助。