我在网上看到了这段代码:
is_char(Ch) ->
if Ch < 0 -> false;
Ch > 255 -> false;
true -> true
end.
is_string(Str) ->
case is_list(Str) of
false -> false;
true -> lists:all(is_char, Str)
end.
它是我一直梦寐以求的 Guard,它检查输入是否为字符串——但是,我不允许在 erlang 中使用它,这是为什么呢?有解决办法吗?
我希望能够写出类似的东西:
Fun(Str) when is_string(Str) -> Str;
Fun(Int) when is_integer(Int) -> io:format("~w", [Int]).
甚至更好地在消息上使用它。