erlang基础练习题

erlang基础练习题

1、将列表中的integer,float,atom转成字符串并合并成一个字个字符串:[1,a,4.9,“sdfds”] 结果:“1a4.9sdfds”(禁用++ – append concat实现)

// An highlighted block
spl([]) -> [];
spl([H|T]) ->
    X = if
            is_integer(H) -> [integer_to_list(H)|spl(T)];
            is_atom(H)    -> [atom_to_list(H)|spl(T)];
            is_float(H)   -> [float_to_list(H, [{
   decimals,1}])|spl(T)];
            is_list(H)    -> [H|spl(T)];
            true -> erlang:error("data error")
        end,
    %% 去除列表中“,”
    binary_to_list(list_to_binary(X)).
    
%% 尾递归 
spl2(L) -> spl2(L, []).

spl2([], ACC) -> ACC;
spl2([H|T], ACC) ->
    X = if
            is_integer(H) -> spl2(T, [ACC|integer_to_list(H)]);
            is_atom(H)    -> spl2(T, [ACC|atom_to_list(H)]);
            is_float(H)   -> spl2(T,[ACC|float_to_list(H, [{
   decimals,1}])]);
            is_list(H)    -> spl2(T,[ACC|H]);
            true -> erlang:error("data error")
        end,
    binary_to_list(list_to_binary(X)).


2、得到列表或元组中的指定位的元素

// An highlighted block
pop([], _) -> [];
pop({
   }, _) -> [];

pop(L, K) ->
    case is_list(L) of
        true  -> pop(L, K, []);
        false -> pop(tuple_to_list(L), K, [])
    end.

pop([H|T], K, _) ->
    if
        K =:= 1 -> H;
        K =< 0 -> exit(K);
        true -> 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值